微軟十年安全備忘錄:個人經(jīng)歷訪談
譯文【51CTO.com 1月17日外電頭條】我至今還清晰記得微軟在2001至2002年期間的安全狀態(tài),一切仿佛就發(fā)生在昨天。也許不會再有另一段時光能像這兩年一般在我腦海中留下如此深刻的印象。2001年并不盡如人意,但2002年則有了大幅度改善??梢哉f正是前一年的困境才造就了接下來的飛躍!因此,讓我們共同追憶往昔……
在1999年底,我們幾位同事共同建立了一個規(guī)模有限的安全團隊(著眼點為處理'威脅'而非開發(fā)'功能'),旨在幫助整個公司提高軟件安全意識。在很長一段時間中我們連個像樣的名頭都沒有,直到有一天當(dāng)時的Windows系統(tǒng)產(chǎn)品副總裁Dave Thompson放出話來,將團隊命名為Windows自發(fā)性安全小組(簡稱SWI)。那一陣子我們的著眼點主要在于深入檢查Windows代碼并搜尋安全漏洞,不過以這么微薄的力量應(yīng)對Windows那般龐大的系統(tǒng),工作成果實在是乏善可陳。因此,我們決定將重心轉(zhuǎn)向"安全漏洞清除"模式,也就是每天早上為Windows部門的一個小型開發(fā)團隊(例如網(wǎng)絡(luò)、終端服務(wù)、IIS、IE等)提供安全教育;在剩下的時間里我們則與該工程小組一起尋找該范疇內(nèi)可能存在的漏洞。這種方式相當(dāng)有趣,我們也確實揪出了不少問題,但其中最重要的意義是將安全意識逐漸滲透到企業(yè)的每一個角度。到底找出多少漏洞其實并不打緊--關(guān)鍵之處在于喚起人家對安全問題的重視程度并減少未來出現(xiàn)疏漏的可能性。
盡管比起初始狀態(tài),SWI在漏洞清除方面已經(jīng)頗有成效,但規(guī)模上的固有問題仍然使得工作進展舉步維艱,而且無法徹底擺脫勞動密集型這一根本屬性。不過安全漏洞清除工作在各種困擾之下仍然維持了十八個月之久。
2001年對于微軟的安全事業(yè)來說算得上是一次考驗,而其中的主要原因則是CodeRed與Nimda。這兩種蠕蟲病毒對Internet Information Server 4.0與5.0兩個版本產(chǎn)生了極其惡劣的影響。CodeRed利用的是默認(rèn)存在于IIS4與IIS5中的某行代碼錯誤,現(xiàn)在回想起來,代碼實在不應(yīng)該以默認(rèn)形式進行安裝。Nimda則相對更為復(fù)雜,因為它在危害系統(tǒng)時利用到了不只一項漏洞。
雖然沒能阻止這一切的發(fā)生,但David LeBlanc和我還是在此期間寫出第一版《編寫代碼安全》一書。我們撰寫此書的目的是為了給大家一些有益的參考,以免被同樣的安全問題一次又一次絆倒。但我們真的沒想到編寫安全代碼在日后會成為如此暢銷的書籍。
隨著《編寫安全代碼》一書完稿付梓,2001年也漸漸接近尾聲。這時我收到一封來自Loren Kohnfelder這位.NET框架安全領(lǐng)域頂尖人物的電子郵件。Loren最杰出的貢獻是定義了如今人們常常提到的公共密鑰基礎(chǔ)設(shè)施(簡稱PKI)。大家不妨閱讀他于1978年就這一專題發(fā)表的論文,同時Loren也是STRIDE威脅模型的主要推手之一。
Loren告訴我,.NET通用語言運行(簡稱CLR)團隊在該項目的最終開發(fā)階段發(fā)現(xiàn)了一些安全漏洞,這讓他頗為憂心。我們決定組織一個規(guī)模更大的漏洞清除小組;但這一次我們希望整個小組無論存在時間有多長,至少應(yīng)該在組建起來之后能及時發(fā)揮預(yù)期作用。所謂"預(yù)期作用"是指令產(chǎn)品的安全漏洞數(shù)量盡可能趨近于零。這就是日后小有名氣的".NET安全檢查站",我們甚至根據(jù)團隊啟動的日期定做了紀(jì)念T恤。然而可能是為了先抑后揚吧,小組成立的當(dāng)天來自西北太平洋的巨大暴風(fēng)雪席卷各地,而微軟雷蒙德園區(qū)也被迫暫時關(guān)閉,因此我們的"檢查站"也只好延期啟動。
"檢查站"獲得了巨大的成功,這要多虧了Brian Harry與他的團隊,他們在管理方面的輔助讓我們受益匪淺。我們對.NET工程團隊實施安全再教育、發(fā)現(xiàn)并修復(fù)漏洞,但對我個人而言,最重要的是我們推廣了縮小攻擊面這一概念(即限制暴露在不受信用戶面前的代碼數(shù)量)。正是從這里衍生出了允許特定受信訪客屬性(簡稱APTCA),另外使ASP.NET運行在低權(quán)限環(huán)境下的想法也由此而來。
2001年12月《編寫安全代碼》一書問世,而Doug Bayer和我則與比爾·蓋茨在一次無比冗長的會議上詳細討論安全漏洞問題。顯然他對于2001年到處肆虐的蠕蟲病毒非常關(guān)注,并希望了解更多信息。在會議結(jié)束時,我送給比爾一本《編寫安全代碼》。
2001年12月末,.NET檢查站小組的歷史使命也宣告結(jié)束。在此期間,我們了解到如此將隊伍凝聚起來,共同解決通用型安全案例。但這還不夠,未來的路上仍有更多工作等待著我們!
鑒于在.NET方面的成功,我們決定將工作重心放在Windows .NET Server上(當(dāng)時該項目就叫這個名字)。根據(jù).NET模型,我們于次年二月開始行動,并仍然貫徹及時發(fā)揮作用這一理念。與Windows各項目小組的合作基本于三月末結(jié)束。
這就是名為"Windows安全推動計劃"的項目。
正如當(dāng)下大家所熟悉的,比爾在2002年1月向全公司推出了著名的可信賴計算(簡稱TwC)備忘錄,當(dāng)時我們正在為Windows系統(tǒng)籌備安全工作。他很少發(fā)表備忘錄,因此這也標(biāo)志著企業(yè)內(nèi)部將開展一次大規(guī)模行動。
在推動計劃中,我們將教育流程分為三塊:我負責(zé)所有Windows開發(fā)人員、Jason Garms負責(zé)全部程序主管及架構(gòu)師,而Chris Walker則培訓(xùn)各位測試人員。Steve Lipner與Glenn Pittaway引導(dǎo)每日流程管理,并不斷與高層管理人員彼此溝通。
我們借鑒自安全漏洞清除項目的一大方案是讓某位來自管理層的資深人士出席培訓(xùn)活動。 例如在某次培訓(xùn)的開幕會議上,我就請到了Windows基礎(chǔ)設(shè)施(包括內(nèi)核到設(shè)備等)部門副總裁Rob Short。Rob身形高大瘦削,帶著濃濃的愛爾蘭口音,他當(dāng)時的發(fā)言至今仍回響在我的腦海中。他指出,"不要把安全事務(wù)當(dāng)成什么特殊問題,這只是我們完成工作的一項常規(guī)組成部分。"每當(dāng)我與微軟內(nèi)部的新任工程師或是現(xiàn)場的客戶討論安全話題時,總會引用Rob的這句名言,其簡潔精要的總結(jié)性令人難忘。
Windows安全推動計劃作為元祖項目,衍生出了SQL Server安全推動計劃、Exchange安全推動計劃乃至Office安全推動計劃等諸多產(chǎn)物。盡管緩慢,但這一系列項目確確實實改變了企業(yè)的固有觀念。工程師與經(jīng)理已經(jīng)逐漸將安全融入日常工作當(dāng)中。
貫穿所有推動計劃的關(guān)鍵因素在于降低產(chǎn)品的默認(rèn)攻擊面。這也是Windows Server 2003(請注意名稱的變動)中采用了一款功能精簡過的瀏覽器且沒有安裝默認(rèn)Web服務(wù)器的原因。
推動計劃中不太為人所熟知的情況是,我們針對各種技術(shù)自身存在的安全隱患制作了大量書面文檔。其中大部分都歸入了第二版《編寫安全代碼》一書;這使得此書由過去的500頁增至800多頁,大部分新增內(nèi)容都源自我們在2002年的調(diào)整工作中獲得的心得體會與經(jīng)驗教訓(xùn)。就拿關(guān)于國際化與全球化安全隱患這一章來說,書中的相關(guān)文字主要來自Windows全球化小組撰寫的白皮書。該小組不僅認(rèn)真執(zhí)行了整個安全推動流程,同時從自身的獨特視角出發(fā),為我們帶來不少頗具新鮮感的安全審視思路。
推動計劃本身只能算是一種起步,真正的改變在我們實行安全開發(fā)周期(簡稱SDL)時方露端倪。我曾強調(diào)過多次,先埋頭搞軟件開發(fā)再一次性進行安全推動的想法根本不可行。坦率地講,在項目接近尾聲時再關(guān)注安全已經(jīng)于事無補了。我們需要讓安全成為"生產(chǎn)流程的一部分",這也正是SDL誕生的原因。
不過事情也很難始終一帆風(fēng)順。2003年我們的SQL Server遭遇了蠕蟲王,Windows也被沖擊波搞得焦頭爛額。由于沖擊波有可能造成計算機藍屏,因此產(chǎn)品支持部門收到的電話反饋迅速增多,連我們這個團隊也不得不抽調(diào)部分人手處理電話接聽工作。Windows shell團隊的開發(fā)主管Raymond Chen當(dāng)時就坐在我旁邊,并在我的注視下寫出這篇博文:
沖擊波的出現(xiàn)引發(fā)了一項持久且高強度的安全項目,這就是眾所周知的"Springboard",由Rebecca Norlander、Matt Thomlinson以及John Lambert共同主持。而努力的成果就是Windows XP SP2,我們不僅發(fā)現(xiàn)并修復(fù)了大量安全漏洞,同時為其IE瀏覽器、DCOM以及RPC添加了許多關(guān)鍵性防御機制。我們還啟用并強化了Windows防火墻,并新增了數(shù)據(jù)執(zhí)行保護(簡稱DEP)系統(tǒng);同時我們將這套體系與安裝流程綁定,使得用戶能更方便地設(shè)定自動更新功能。
微軟在過去的十年中經(jīng)歷了經(jīng)歷了無數(shù)考驗與坎坷,而令人自豪的是我一直與這家企業(yè)并肩同行。如今情況有所不同,SDL被視為業(yè)界領(lǐng)先的安全機制,并為微軟之外的許多軟件開發(fā)人員所使用。我個人的工作角色也已經(jīng)發(fā)生變化:我現(xiàn)在與微軟北美網(wǎng)絡(luò)安全團隊協(xié)作,幫助合作伙伴與客戶部署SDL方案。因為大家都已經(jīng)清醒地意識到在安全領(lǐng)域提高關(guān)注度的重要性。
過去的十年發(fā)展之快令人驚愕,但我們?nèi)匀辉谂o跟乃至引領(lǐng)時代的腳步。微軟公司中那些才能卓著的員工在自己、合作伙伴以及客戶的產(chǎn)品中傾注了大量心力,盡管人們可能并不了解,但這些努力為我們帶來的安全保障卻始終來之不易且彌足珍貴。
原文鏈接:http://www.zdnet.com/blog/security/10-years-since-the-bill-gates-security-memo-a-personal-journey/10083
【51CTO.com獨家譯稿,非經(jīng)授權(quán)謝絕轉(zhuǎn)載!合作媒體轉(zhuǎn)載請注明原文出處及出處!】
【編輯推薦】