安全觀察: 再探安全性的十個永恒定律 第1部分
早在 2000 年,Scott Culp 曾發(fā)表了一篇題為“安全性的十個永恒定律”的文章。它是我讀過的有關(guān)安全性問題的最佳文章之一。他所介紹的信息到現(xiàn)在仍然是所有信息安全工作的基礎(chǔ),如果尚未讀過這篇文章,建議您閱讀一下(甚至將其打印出來)。在 microsoft.com/technet/archive/community/columns/security/essays/10imlaws.mspx 可找到它。
人們對該文褒貶不一。有人指摘說,它是 Microsoft 為避免修復(fù)那些被視為嚴(yán)重問題的一些漏洞所采取的花招。但也有人認(rèn)為它是有關(guān)安全問題的一篇最基本的文章,并且由于其公認(rèn)的重要性而被大肆抄襲。但是我卻比較推崇那些能夠提出自己觀點的評價,例如在以下網(wǎng)址發(fā)表的見解:edgeblog.net/2006/10-new-immutable-laws-of-it-security。
在這篇文章發(fā)表后的八年時間里,安全領(lǐng)域發(fā)生了巨大的變化。實際上,在每種主要的蠕蟲病毒爆發(fā)前用戶都會被提請注意。我們已經(jīng)已經(jīng)在打一場信息戰(zhàn)(對手是有組織的犯罪、政治實體等)。常見語匯表中新增了各種新名詞和術(shù)語,例如網(wǎng)頁仿冒、網(wǎng)址嫁接、僵尸網(wǎng)絡(luò)、間諜軟件和跨站點請求偽造等。我們有運行于 Windows 中的有史以來最為復(fù)雜的 rootkit。我們擁有在很大程度上專為解決安全問題而開發(fā)的新操作系統(tǒng),也有對安全問題仍未引起足夠重視的其他一些操作系統(tǒng)。
社會工程學(xué)已發(fā)展成為一個主要威脅。數(shù)據(jù)侵犯(例如,一家大型零售商泄露了 9400 萬個信用卡號碼)已成為常見的新聞故事(但人們?nèi)岳^續(xù)在此類商店購物)。美國和英國政府合伙濫用絕大多數(shù)西方世界居民的私人信息(可人們?nèi)詫⑺饺诵畔⒃诖祟愓写鏅n)。并且,大量的安全劇場(security theater,意指在沒有明顯改善安全措施的情況下讓用戶感到安全的方法)已進(jìn)入我們的生活,機(jī)場的安檢就是一例。
我認(rèn)為現(xiàn)在是需要再來探究一下這些定律的時候了。如果我們看到的所有這些變化都發(fā)生在本世紀(jì)的最早階段,我們是否還會宣稱這些定律是永恒不變的呢?如果的確是這樣 — 如果它們經(jīng)受住了過去 8 年的考驗 — 那么很可能它們也能經(jīng)受住接下來 10 年的考驗。
在這一由三部分內(nèi)容組成的系列文章中,我將以批判的眼光來審視每條定律。本月我將介紹定律 1 到 3。在下個月的內(nèi)容中,我將剖析定律 4 到 7。最后一期我將研究定律 8 到 10,并根據(jù)自從 2000 年這些定律最初面世以來我們周圍所發(fā)生的變化,針對看上去合理的想法和觀點提供一些佐證。
定律 1:如果攻擊者能夠設(shè)法使您在自己計算機(jī)上運行他的程序,那么這臺計算機(jī)就不再屬于您了。
此定律有力地說明了,在計算機(jī)上執(zhí)行的任何軟件都可能會控制該計算機(jī)。在這條永恒定律第一次出現(xiàn)時,Microsoft 提供的操作系統(tǒng)包括 Windows 98、Windows Me 和 Windows NT 4.0?,F(xiàn)在我們有了 Windows Vista 和 Windows Server 2008。
在 Windows 98 和 Windows Me 中,您所執(zhí)行的任何軟件都可以完全控制計算機(jī)。Windows NT 4.0 有一個非??煽康牡讓影踩P停绻?ldquo;管理員”身份運行它,則在效果上會將其隔離模型降級為 Windows 98 和 Windows Me 的模型。當(dāng)然您也可以使用非管理員身份運行 Windows NT 4.0,但這樣做會非常痛苦,極少有組織會這樣做(即使有也是屈指可數(shù)的幾個)。
假設(shè)您就是以非管理員身份運行 Windows NT 4.0 的。那么,在撰寫定律 1 時它是否適用?回答是肯定的。首先,Windows NT 4.0 有大量不容忽視的漏洞。例如,存在著一些不夠嚴(yán)密的權(quán)限,尤其是針對內(nèi)核對象以及在注冊表中。還有許多尚未被發(fā)現(xiàn)但專家預(yù)期可能會發(fā)生的攻擊類型。例如,在 1999 年,人們尚未意識到以提升權(quán)限的用戶身份在交互式桌面上運行進(jìn)程可能會危及計算機(jī)的安全。直到 2002 年,Chris Paget 發(fā)表了有關(guān)粉碎攻擊的白皮書 "Exploiting the Win32 API",這時大家才意識到這一點 (seclists.org/bugtraq/2002/Aug/0102.html)。
難道在擬定定律 1 時 Microsoft 就預(yù)見到了粉碎攻擊?不,實際上并非如此。Microsoft 只是意識到一個簡單的事實:極少有真正的安全邊界可以阻止在計算機(jī)上執(zhí)行的應(yīng)用程序接管該計算機(jī)。
Windows Vista 和 Windows Server 2008 是從 Windows NT 4.0 遷移而來的兩代操作系統(tǒng)。它們是否可使定律 1 無效?是否存在具有同樣問題的其他操作系統(tǒng)?這要視情況而定。在新操作系統(tǒng)中的確存在更為可靠的安全邊界,實際上早在 2000 年出現(xiàn)的一些試驗性操作系統(tǒng)中就已經(jīng)具有了適當(dāng)?shù)陌踩吔?。然而,此類邊界仍為?shù)不多。例如,Microsoft .NET Framework 中的“代碼訪問安全”就是一個安全邊界。它專門設(shè)計用于使在沙盒中執(zhí)行的代碼不會影響底層操作系統(tǒng)。#p#
Internet Explorer 中的 Iframes 提供了另一個安全邊界。但 Iframes 不會影響對操作系統(tǒng)本身的訪問,它只影響網(wǎng)頁上不同部分的內(nèi)容之間的訪問。Internet Explorer 中的“保護(hù)模式”(如圖 1 所示)是操作系統(tǒng)級別的安全邊界。它的目的是防止在瀏覽器中執(zhí)行的代碼影響底層操作系統(tǒng) — 在沒有用戶操作的情況下。還有一些其他安全邊界(如標(biāo)準(zhǔn)用戶帳戶),用于防止用戶帳戶影響底層操作系統(tǒng)或任何其他用戶。
圖 1 Internet Explorer 7 使用名為“保護(hù)模式”的安全邊界(單擊圖像可查看大圖)
了解術(shù)語“安全邊界”的含義極為重要。它并不意味著存在著一個不可侵犯的隔離墻,可以保證提供堅不可摧的、全面的隔離。此術(shù)語實際是指軟件供應(yīng)商(例如 Microsoft)要負(fù)責(zé)提供安全補(bǔ)丁以修復(fù)任何違背該邊界的行為。軟件始終會存在錯誤,毫無疑問,我們會繼續(xù)發(fā)現(xiàn)更多的違背行為,而軟件供應(yīng)商則需要繼續(xù)提供補(bǔ)丁。隨著時間的推移,他們應(yīng)改進(jìn)其軟件以在第一時間修復(fù)這些漏洞。這可能會被視為定律 1 仍然成立的佐證。
但是,還有另外一個需要考慮的至關(guān)重要的內(nèi)容。您之前可能已經(jīng)注意到了短語“沒有用戶操作”。定律 1 實際并非真的與軟件的缺陷或漏洞有關(guān)。它實際是與人為因素中的漏洞有關(guān)!關(guān)鍵短語是“設(shè)法使您”。如果攻擊者能夠設(shè)法使您運行他的程序,則他很可能也能設(shè)法通過一些伎倆使您在賦予程序提升權(quán)限的上下文中這樣做。
即使您不具有管理權(quán)限也沒有關(guān)系。作為標(biāo)準(zhǔn)用戶,您仍有權(quán)訪問大量有趣的信息:銀行文件、情書、圖片、視頻以及公司機(jī)密數(shù)據(jù)。所有此類數(shù)據(jù)都有可能令攻擊者感興趣,并且他們均無需任何提升權(quán)限即可讀取。對于您所管理的計算機(jī)中的信息而言,執(zhí)行某個惡意程序就相當(dāng)于將您所有操作權(quán)限都移交給了攻擊者。因此,如果將“您的計算機(jī)”定義為“您所管理的計算機(jī)中的數(shù)據(jù)”,則大可忽略有關(guān)權(quán)限的任何討論而直接得出“定律 1 成立”的結(jié)論。
即使不對計算機(jī)的定義做過細(xì)的劃分,定律 1 似乎仍然可以經(jīng)受住時間的考驗。定律 1 的目的是為了指出以下事實:作為計算機(jī)的操作員,您必須對您在該計算機(jī)中運行的軟件負(fù)責(zé)。如果您安裝了惡意驅(qū)動程序或惡意視頻編解碼器,則相當(dāng)于將該計算機(jī)的完全控制權(quán)轉(zhuǎn)交給了罪犯!
盡管軟件供應(yīng)商可以采取各種措施來避免發(fā)生意外的危害(這實際是安全邊界的真正意義所在),但有意執(zhí)行的惡意軟件通常會摧毀所有此類保護(hù)性措施。這就是除了確保用戶無權(quán)執(zhí)行管理任務(wù)外,對其進(jìn)行相關(guān)培訓(xùn)也至關(guān)重要的原因。因此,可以肯定地說,定律 1 在今天仍然成立,只是計算機(jī)的定義可能需要稍做修改。#p#
定律 2:如果攻擊者能夠更改計算機(jī)上的操作系統(tǒng),那么這臺計算機(jī)就不再屬于您了。
此條定律看似極其簡單。很顯然,如果攻擊者能夠更改計算機(jī)上的操作系統(tǒng),那么您將無法再信任這臺計算機(jī)。但是,隨著計算需求的發(fā)展演變,操作系統(tǒng)的含義也已發(fā)生了變化。許多年前,我為 The Blackwell Encyclopedia of Management 撰寫了關(guān)于術(shù)語“操作系統(tǒng)”的定義 (managementencyclopedia.com)。在定義中描述了操作系統(tǒng)對輸入輸出設(shè)備、硬件及類似設(shè)備訪問的管理。現(xiàn)在,我手頭并沒有百科全書,而且原始記載也已不知所終,但我可以肯定的是,我并未提到過操作系統(tǒng)包括紙牌游戲、筆觸輸入法以及視頻代碼轉(zhuǎn)換器等內(nèi)容。
隨著計算變得日益復(fù)雜,操作系統(tǒng)也需要支持更多的功能。更重要的是,OEM 廠商常常會在其中加入他們自己的附加軟件 — 這種附加軟件有的還稍微有點作用,但通常都是有百害而無一利。而且,其中有些附加軟件會重復(fù)已內(nèi)置到核心操作系統(tǒng)中的功能。
例如,Windows Server 2008 Enterprise Edition 在默認(rèn)安裝時所占磁盤空間超過 5 GB。Windows Vista Ultimate Edition 包括 58,000 多個文件,占用空間超過 10 GB。而且組成操作系統(tǒng)的不僅僅是文件。還有數(shù)千個配置設(shè)置以及后臺程序或服務(wù)。
它們都只是操作系統(tǒng)的一部分。它是一個整體術(shù)語,包括所有文件、所有配置設(shè)置、所有服務(wù),也包括由文件和配置設(shè)置創(chuàng)建的所有運行時對象 — 信號、命名管道、RPC 端點等。甚至高度抽象的構(gòu)造(如系統(tǒng)時間)和特定類型的數(shù)據(jù)(如事件日志內(nèi)容)也應(yīng)被視為操作系統(tǒng)的一部分。
鑒于操作系統(tǒng)的發(fā)展演變方式,修改任何此類文件結(jié)構(gòu)是否真的會使計算機(jī)不再值得信賴?直接的回答是否定的。例如,Windows Vista 隨附了來自 MS-DOS 的舊式行編輯器 edlin.exe。我無法肯定但我愿意以一杯三倍量的摩卡咖啡作為賭注:自 Windows Vista 發(fā)布之日起,在所有安裝的副本中,edlin.exe 只被調(diào)用過兩次。這兩次都發(fā)生在大約三分鐘之前我嘗試記住其語法的時候。如果有人修改了 edlin.exe 或其他從來沒有人使用過的文件,是否真的意味著它不再是您的計算機(jī)了?
Edlin.exe 毫無疑問是操作系統(tǒng)的一部分,但如果沒人曾經(jīng)執(zhí)行過此文件,那么對它的修改會導(dǎo)致計算機(jī)受到破壞嗎?答案當(dāng)然是不會。修改并未使用過的操作系統(tǒng)部分并不會使計算機(jī)受到破壞。而從未使用過的操作系統(tǒng)部分還有很多。
但是,間接的答案是肯定的。我們不能只通過查看是否有人執(zhí)行某個文件來判斷對它的修改是否可能會導(dǎo)致計算機(jī)受到破壞。問題要比這復(fù)雜得多??匆幌?edlin.exe 的訪問控制列表 (ACL),如圖 2 所示。
圖 2 edlin.exe 的 ACL 限制非常嚴(yán)格(單擊圖像可查看大圖)
edlin.exe 的 ACL 限制非常嚴(yán)格。只有 TrustedInstaller 服務(wù)有權(quán)修改這一可執(zhí)行文件。這一點非常重要:它意味著當(dāng)攻擊者修改計算機(jī)上的該文件時,會導(dǎo)致出現(xiàn)間接的影響。修改 edlin.exe 這一行為的確意味著此計算機(jī)不再屬于您了。惡意用戶可以修改 edlin.exe 這一事實是此處的關(guān)鍵所在。如果攻擊者可以修改該文件,則他就可以修改任意文件,這意味著您將無法再信任計算機(jī)上的任何內(nèi)容了。#p#
操作系統(tǒng)會保護(hù)自己。服務(wù)會受到保護(hù)以避免遭到未經(jīng)授權(quán)的修改。配置設(shè)置會受到保護(hù)以避免遭到未經(jīng)授權(quán)的修改。磁盤上的文件會受到保護(hù)以避免遭到未經(jīng)授權(quán)的修改。甚至操作系統(tǒng)所使用的信號和 RPC 端點也會受到保護(hù)以避免遭到未經(jīng)授權(quán)的修改。如果攻擊者可以修改任何此類受保護(hù)的對象,則他也就可以修改所有此類對象,并且極有可能他已經(jīng)這樣做了。
這一點至關(guān)重要。通過幾條永恒定律可知,并非執(zhí)行某種操作這一行為意味著計算機(jī)遭到了破壞。真正重要的只是有人有能力執(zhí)行某種操作。這是一個需要注意的地方。在涉及計算機(jī)安全的每個方面,您都必須始終牢記:真正重要的并不是實際執(zhí)行了什么操作,而是他能夠執(zhí)行什么操作。
如果計算機(jī)向 Internet 敞開大門且數(shù)月未打補(bǔ)丁,它是否仍值得信賴?答案是否定的。必須將該計算機(jī)視為已遭到破壞。您無法再信任可能已遭到破壞的系統(tǒng)上的任何內(nèi)容。(五年前,我在文章 "Help!I Got Hacked.Now What Do I Do?" 中說過同樣的話,文章的地址為 technet.microsoft.com/library/cc512587)。如果遇到老練的攻擊者,受到破壞的系統(tǒng)甚至可能不會顯示出任何遭到破壞的跡象。系統(tǒng)可能看起來非常正常。
毫無疑問,定律 2 仍然成立。如果攻擊者可以修改計算機(jī)上任意受保護(hù)的對象,則該計算機(jī)將不再屬于您了。只需記住,重要的是修改此類對象的能力,而并不是受到實際的攻擊。
定律 3:如果攻擊者對您的計算機(jī)具有無限制物理訪問權(quán)限,那么這臺計算機(jī)就不再屬于您了。
在 2000 年,此條定律極為重要。許多人并未完全了解對系統(tǒng)具有物理訪問權(quán)限時都可以做些什么。實際上,即使是應(yīng)該對此有深刻了解的一些政府機(jī)構(gòu)也并未認(rèn)識到這一基本要點。當(dāng)時,在安全指南中建議將“Allow shut down without logon option”(允許在不登錄的情況下關(guān)機(jī))設(shè)為“disabled”(禁用)。這將導(dǎo)致登錄屏幕上的“Shut down…”(關(guān)機(jī)…)按鈕變灰。其理論依據(jù)是:要關(guān)閉計算機(jī),用戶必須首先登錄以便留下系統(tǒng)關(guān)閉人員的審核記錄。
其實此觀點存在瑕疵。要對登錄屏幕上的“Shut down…”(關(guān)機(jī)…)按鈕具有訪問權(quán)限,您必須實際就坐在控制臺旁邊。在您坐在控制臺旁邊的情況下,如果您真的想要關(guān)閉計算機(jī),通??梢允褂糜嬎銠C(jī)前面的圓形大按鈕 — 甚至電源線。系統(tǒng)肯定會關(guān)閉。而且沒有審核記錄。
Windows 2000 包括一個名為“Allow undock without logon”(允許在不登錄的情況下移除)的安全設(shè)置,此選項在 Windows Vista 中仍可用,如圖 3 所示。其原理是相同的。要從基座移除便捷式計算機(jī),必須先登錄系統(tǒng)。
圖 3 為什么不把計算機(jī)和基座一起盜走?(單擊圖像可查看大圖)
此設(shè)置的實際安全價值很值得懷疑。我的想法是如果有人可以走近該便捷式計算機(jī)并移除它,那么肯定也有人可以輕松地盜走它?,F(xiàn)在,雖然我并非曾經(jīng)盜取過便捷式計算機(jī),但如果我想這樣做的話,這一預(yù)防措施根本無法阻止我。我可能會將便捷式計算機(jī)和基座作為一個整體一起拿走。哎呦,我還盜走了網(wǎng)線和電源線。真是一個毫無意義的安全調(diào)整工具!#p#
直到 Petter Nordahl-Hagen 創(chuàng)建了他的 Offline NT Password & Registry Editor,才真正觸及有關(guān)物理訪問的要害。他的作品只是一張 Linux 引導(dǎo)盤,其中包括一個試驗性的 NTFS 文件系統(tǒng)驅(qū)動程序,可實現(xiàn)對 NTFS 卷的讀取和寫入訪問權(quán)限。引導(dǎo)盤上的軟件會將注冊表安裝到本地計算機(jī)中,并將管理員帳戶的新密碼寫入 SAM(軟件資產(chǎn)管理)配置單元。您需要的只是能夠物理訪問系統(tǒng)以及一、兩分鐘的時間。
類似它的這種工具就是最初撰寫定律 3 的原因所在。實際上,在許多演示中都使用了 Nordahl-Hagen 的工具。不幸的是,它并未在絕大多數(shù)受眾中間傳播開來。我曾在一些演示中親自使用過此工具,但由于厭倦了被不斷問及“我們?nèi)绾未_保沒有用戶知道類似工具?”以及“Microsoft 采取了哪些措施來修復(fù)這個問題?”,后來就再也沒有使用過它。IT 業(yè)界的絕大部分人只是不想接受或不想了解物理訪問的危險程度要壓過所有其他途徑這一事實。
在這種環(huán)境中,定律 3 非常重要。但是它卻遭到批評家們的無情攻擊。它被認(rèn)為是 Microsoft 的伎倆,企圖避免修復(fù)可能(即使只有一點點)與物理訪問相關(guān)的所有問題。定律 3 在很多情況下被用來駁回漏洞報告,包括 Offline NT Password & Registry Editor。但是,要阻止對系統(tǒng)具有物理訪問權(quán)限的攻擊者,實際只有一種可能的方法:確保他們無法接觸到任何數(shù)據(jù)。
這是破解定律 3 的可能途徑。從定律成文之初,完全磁盤加密技術(shù)就已成為一種可行的解決方案。通過使用完全磁盤加密(更準(zhǔn)確的說法是“整卷加密”),整個卷(在其他操作系統(tǒng)中被稱為分區(qū))均可被加密。因此,如果整個引導(dǎo)卷(換句話說,其中安裝有操作系統(tǒng)的卷)被加密,我們想知道的是定律 3 是否仍然成立?
回答是非常有可能。首先,解密密鑰必須存儲在某個位置。放置密鑰(BitLocker 中的默認(rèn)選項)的最簡單位置是計算機(jī)中的“受信任的平臺模塊”芯片。這樣做的話,計算機(jī)將可以通過無人參與的方式引導(dǎo)。計算機(jī)引導(dǎo)完成后,對計算機(jī)擁有永久物理控制權(quán)限的一些老謀深算且心懷叵測的攻擊者可通過多種方式對其實施攻擊。由于計算機(jī)現(xiàn)在可以連接到任意網(wǎng)絡(luò),因此可能會使用與網(wǎng)絡(luò)相關(guān)的方式來攻擊系統(tǒng)。
例如,攻擊者可能會通過直接內(nèi)存訪問 (DMA) 設(shè)備(如 USB 閃存驅(qū)動器)來讀取或?qū)懭雰?nèi)存。計算機(jī)開始運行后,如果攻擊者對該計算機(jī)具有物理訪問權(quán)限,則后果將不堪設(shè)想。
如果密鑰未存儲在該計算機(jī)中,則攻擊將取決于攻擊者能否獲取或猜出密鑰。如果使用 PIN 碼來引導(dǎo)計算機(jī),則攻擊者可能會比較輕松地猜出此代碼。如果密鑰存儲在單獨的硬件設(shè)備中(如 USB 閃存驅(qū)動器或一次性密碼鏈)或由其派生而成,則攻擊者必須對該獨立設(shè)備具有訪問權(quán)限。肯定有方法可以獲取這些密鑰,或使那些對密鑰具有訪問權(quán)限的人感到非常不便,盡管可能要頗費一番周折。
您也可以通過一種略微不同的方式來解釋定律 3:“如果攻擊者對您的計算機(jī)具有物理訪問權(quán)限,可能此計算機(jī)已經(jīng)被盜,因此不太可能再將其拿回來。”從這個角度看,這臺計算機(jī)實際上已不再屬于您了。而且,從這個角度來看,對于攻擊者而言,能否訪問計算機(jī)上的數(shù)據(jù)也無關(guān)緊要。但是這實際并非定律 3 的實質(zhì)所在。它意味著攻擊者可以訪問計算機(jī)中的數(shù)據(jù),而非得到計算機(jī)本身。
綜上所述,定律 3 的確仍然成立。毋庸諱言,當(dāng)今的一些技術(shù)在阻止具有物理訪問權(quán)限的攻擊者方面已經(jīng)取得了明顯的成效,并因而最大程度降低了能夠訪問采用了安全措施的計算機(jī)上的數(shù)據(jù)的攻擊者數(shù)量。也就是說,攻擊者所具有的能力始終決定著攻擊者實際可以攻擊的程度,最新的技術(shù)解決了 10 個永恒定律中的多個定律所提出的問題(在一定程度上)。但是,物理訪問仍提供了進(jìn)入系統(tǒng)的方法(盡管較為復(fù)雜)。
就目前而言,安全性永恒定律被證明非常具有適應(yīng)性,無論是對于技術(shù)進(jìn)步還是對于時間考驗而言。在前 3 個定律中,定律 3 最不穩(wěn)定,不過即使這樣它在許多情況下也仍然成立。但是,它是具有最易獲取且最可靠的緩解方案的定律。在接下來的兩期《TechNet 雜志》中,我將繼續(xù)本次討論,看一看定律 4 到 10 是否仍然成立。
本文來源:微軟TechNet中文站
【編輯推薦】