安全性的十個永恆定律2

安全觀察 再探安全性的十個永恆定律,第 部分 

Jesper M. Johansson

 目錄 

在上個月的《TechNet 雜誌》中,我開始發表由三部分組成的連載內容的第一部分,再次討論了大家耳熟能詳的安全性的十個永恆定律一文。我希望在其初次受到肯定的八年之後重新評估它們,看看它們是否仍然適用 — 換句話說,就是看看它們是否確實經得起考驗(您可以在 microsoft.com/technet/archive/community/columns/security/essays/10imlaws.mspx 上找到本系列的第一部分)。

我發現前三條定律仍然適用。現在我準備繼續討論接下來的四條定律。在下個月的最後一部分中,除了討論最後三條定律之外,我還將根據八年來的後見之明提一些新的看法。

定律 4:如果您允許***者將程序上傳到您的網站,網站也就不再是您的網站了。

定律 聽起來似乎有點奇怪,畢竟其他定律都相當高級,講述的都是一般功能,而非特定服務。前三條定律都在描述計算機被他人控制的情形,定律 談的卻是網站。

要理解定律 4,就必須先了解一些歷史背景。這十大定律最初發表於 2000 年。當時網站纔剛剛興起,還不夠成熟,就連 Amazon 和 eBay 這類站點也尚在開發階段。雖然***程序在網站上運行任意命令當時是司空見慣的事,但卻幾乎沒人去修補它們。

在這情況下,Microsoft 往往將定律 視爲必要的公開聲明,即您必須對您的網站服務負責。但在 2001 年 月 Nimda 出現之後,卻給了這種想法一記當頭棒喝。Nimda 是一種多向量網絡蠕蟲,它所採取的其中一種傳播方式就是感染防護不足的網站,然後篡改這些網站,植入蠕蟲。

網站塗改也是定律 的時間背景之一。Attrition.org 就是從那時候起,開始建立許多遭到塗改的網站頁面的映像存檔 (attrition.org/mirror/attrition/months.html)。遭到塗改的網站有許多,其中不乏知名網站。就連著名的安全性培訓機構 SANS Institute 的首頁也曾經遭到塗改。圖 1 顯示的是 1998 年 10 月美國亞利桑那州網站的遭到塗改的頁面。

圖 亞利桑那州網站的遭到塗改的頁面(單擊可獲得大圖)

當時的問題在於,當網站遭到破壞時,人們通常看不清事情的真相。大家都認爲只要除掉破壞性網頁,一切就會正常。於是,有本領的人就忙着修補***者所利用的漏洞(如果能找到漏洞)。

大家都沒有看到事情的全貌。定律 旨在讓大家思考當網站遭到破壞時可能會發生什麼情況,而不是思考已經發生了什麼情況。

只可惜它沒有得到預期的效果。儘管定律 早已提出,但直到 2004 年,我還是得疲於回答這樣的問題:難道不是隻要刪除***創建的網頁,就能夠恢復我們的正常工作嗎?我是個不吝惜言語的人,所以就寫了一篇文章試圖糾正這樣的觀念:《Help: I Got Hacked. Now What Do I Do?》地址爲 technet.microsoft.com/library/cc512587.aspx

但問題是,定律 在今日是否仍然站得住腳?***者能夠將程序上載到您的網站,是否就表示他已實際佔領了您的網站?說得更詳細一點,他是佔領了您的網站,還是佔領了您的訪問者,亦或還是都佔領了呢?定律 並沒有明確說明這一點,因此我要好好分析一下這兩方面。

關於***者是否佔領了您的網站這一點,答案是肯定的。倘若您允許***者將程序加到您的網站上,您的網站就被他佔領了(不過有一些例外,我稍後會加以說明)。對於一般網站,***者可以通過上載程序做兩件事,他能夠上載到您的網站代表着很大的隱患。

第一件就是命令您的網站爲他服務。如果有人打算散佈像兒童色情圖片這種非法內容,那麼放在什麼位置比放在能追蹤到***本身的網站比較好呢?想必在您的網站上散佈這些內容應該會比在罪犯自己的網站上更理想。

第二件就是通過上載程序來控制網站背後的系統。當然,這取決於他是否真的能夠在您的 Web 服務器上運行該程序。只將程序放在網站上而不執行任何操作,並不會產生任何作用。但是如果***者可以運行此程序,那就表示他確實已經佔領您的網站,不但可以使網站爲他服務,還可以利用網站控制其他事情。

而我剛提到的暗示的重要性甚至遠不止於此。在這篇文章中,我努力想說明的一點是,您不知道***者在***之後可能做什麼事。如果他已設法將自己的內容放到了您的網站上,那麼您要問的就是他還能做什麼。

答案可能有很多種,而這正是本謎題最關鍵的部分。倘若***者能夠在您網站背後的服務器上運行程序,那麼他已經完全佔領這個網站以及網站可以執行的任務了。也就是說,這個網站再也不屬於您了。

至於他是否會***訪問網站的訪問者,就很難說了。在 90 年代末期,瀏覽器上的安全漏洞隨處可見,到了 2004 年左右,情況已經有了明顯改善。現在,兩種主要的瀏覽器,即 Internet Explorer 和 Firefox,在安全性方面都已經相當可靠了。事實上,比起 90 年代的瀏覽器,現在的瀏覽器確實稱得上安全性堡壘。

***者是否可以***您的訪問者,主要取決於兩方面。第一方面是瀏覽器中是否存在可以***的漏洞?也許有,不過比以前已經少得多了。第二方面是***者是否可以引導用戶泄漏自己?答案常常是肯定的。

多數用戶都會安裝網站要求他們安裝的東西,這個問題非常嚴重,因爲這是無法用技術解決的。我曾在 2008 年 7和 月份的《安全觀察》系列文章中討論過這個問題。關於定律 4,很遺憾,它意味着***者能夠***您的訪問者的機率相當高。

之前我提過的例外情況應該不難猜到。現在網站所做的許多事在 90 年代都是很難預測到的。例如,現在像 Microsoft SharePoint 這樣的內部協作網站相當普遍,只要具備適當的權限,任何人都可以將程序上載到這類網站,但這並不表示該網站或任何來訪的用戶會被泄漏。那純粹是該網站的用途。在某種程度上,只要具備訪問該網站的權限,都是可以信任的用戶。

然後就是分享軟件網站。雖然過去曾有惡意軟件發佈到這些網站,但它們的初衷是分享軟件。這不表示會有任何用戶被泄漏。簡而言之,這些網站都備有安全措施,可以確保自身安全,用戶也不會因爲訪問這些網站而自動泄漏。我認爲這個例外狀況就足以確認這個規則了。因此,儘管有些網站的設計意圖就是允許用戶(無論好壞)上載程序,但是定律 仍然成立(至少在立意上仍然成立)。

定律 5:弱密碼也能帶來強大的安全性。

多年來密碼已經成爲我的收藏夾。密碼(更籠統的說,是分享的祕密)是一種驗證對象的好方法。但是它們有個小小的問題:只要一面對人性,它們就會徹底敗下來。

在分時計算 (time-sharing computing) 剛剛問世的太平時代,區別用戶的需求逐漸明顯。系統需要使用某種方法來區別張三和李四的數據。在理想的情況下,張三應該可以防止李四讀取他的數據(雖然這個要求相當基本)。

解決方法是使用用戶帳戶和密碼。過去,我們是一個計算機系統有一個帳戶,而且通常有一個密碼,密碼通常都是下列信息中的一種:

· 一個孩子的名字

· 配偶的名字

· 寵物的名字

· “God”(如果您是超級用戶)

時間一晃過去了 30 年,現在我們擁有幾百個帳戶 — 它們各自分佈在 Internet 上的不同網站,以及若干臺計算機上。其中每個系統都告訴我們,不能在其他任何一個系統上使用同樣的密碼。建議:密碼最好不要太弱,不要寫下來,而且每隔 30 到 60 天就要更改一次。

由於一般人無法在一天更改四個密碼之後,還能準確記住任何一個,結果只好在所有的系統上使用相同的密碼(或是兩個不同的密碼),而且這些密碼通常都是選自下面幾個可能名稱:

· 一個孩子的名字,後面再加上數字 1

· 配偶的名字,後面再加上數字 1

· 寵物的名字,後面再加上數字 1

· “GodGod11”(只適用於超級用戶)

這 30 年來我們的進步並沒有達到預期的程度。研究人員仍在爲密碼查找適合的研究領域;有關詳細信息,請參閱《PC World》中的文章“Too Many Passwords or Not Enough Brainpower”(地址爲 pcworld.com/businesscenter/article/150874/too_many_passwords_or_not_enough_brain_power.html)。

就一般使用上來說,密碼顯然是相當弱的安全形式。不過即使如此,安全使用密碼還是有講究的。例如,您可以創建強大的密碼並將它們寫下來 — 這種做法本身並無任何問題。但是,充斥在周圍的不良安全性建議最後總會使用戶認爲,在每一個地方使用相同的密碼要好過將密碼寫下來。

於是,所有的安全性最終卻變成一個漏洞。我們以協作虛擬專用網絡 (***) 訪問爲例。我曾討論過各種 *** 技術;討論過供應商對於它們強得驚人也慢得驚人的密碼加密優點所做的評估;以及供應商爲了不讓***者找到數據包而輪換加密密鑰,並將其加密。

但所有這些討論內容都完全沒有切中要點。如果以目前能用的計算技術,還得花上一千萬年才能破解一個數據包數據流,***者就不會試圖去破解了。使網絡速度呈數量級下降以獲得要花一億年才能破解的加密,這樣到底有什麼意義?坦白說,如果一億年(或是一千萬年)以後的人類真的有辦法將我的工作電子郵件解密,那就隨他去吧。

加密真是這麼值得***的漏洞嗎?我相信***者絕對會***容易下手的漏洞 — 這個漏洞就是用戶常常選擇我剛剛提到的幾種名稱作爲用戶密碼。

如果所有用戶都選擇一個六個或八個字符的密碼,那麼,就算再強的加密也很難不被攻破。於是我們只好尋求更強的身份驗證方式,如智能卡和一次性 PIN 碼生成器。

這兩種方法雖然可以提供顯著的改善,卻不見得能夠提升安全性。例如,智能卡很容易丟失或忘記隨身攜帶。一次性 PIN 碼生成器大小正好可以放在卡片夾內,掛在脖子上也很好看。下次您到街對面的咖啡店喝杯咖啡時,不妨看看是否有人會盯着您現在用的 PIN 卡,大聲念出您的標記的用戶名稱,然後費心猜測機率渺小的隨機密碼,好利用這唯一的途徑連接到您所在公司的網絡。

定律 是最適合現在的定律,而且今後也仍然適用。但我認爲它可以大幅通用化,不只弱密碼能夠帶來強大的安全性,我們可以更籠統的說:弱身份驗證或甚至漏洞都能帶來強大的安全性。

多數 IT 安全性專家都很自責沒有回頭看清全貌。我們常會將注意力集中在只需強大的安全性技術就能夠輕鬆解決的某個問題上,卻常常意識不到還有一些系統漏洞有待緩解,甚至有待思考,以及需要藉助所有我們運行的技術加以改善。

例如,許多公司積極調整用戶所用的可移動設備,卻允許出站 Secure Shell (SSH) 和加密的電子郵件連接。如果您將待傳輸的數據加密,甚至連自己都看不到數據,那麼通過限制可移動設備能在多大程度上真正減少數據丟失?如果我們還想繼續生存並繁榮昌盛,我們的安全性專家就必須解決這一重要問題。

定律 6:計算機是否安全取決於管理員是否值得信任。

我很驚訝,即使到了今天,我們還在關注只適用於管理員的使用 — 更糟一點,只有在您已經是管理員時才適用的使用 — 的報告。在撰寫本文時,我正坐在從 Black Hat 2008 會議回程的機場。就連在那裏也看到一篇演示文稿,開頭寫着:只要具有根目錄訪問權限,您就能夠按照以下方式控制系統。

一方面,有些人認爲最糟的情況是如何修改系統(儘管不是很光明正大,但是隻要他們具備修改系統的權限,也不能阻止他們這麼做),真是令人欣慰。另一方面,大家似乎還看不出這麼做根本沒什麼意義,仍然想方設法一意孤行 — 徒然浪費寶貴的時間和精力,才更令人泄氣。

其實道理很簡單:只要用戶是管理員(或 Root 用戶、超級用戶,或是您對該角色的其他稱呼),就能在該系統通行無阻,爲所欲爲!

當然,不管這類惡意用戶想要做什麼事,他們都能找到更誇張、更狡猾的方式得逞,但是基本道理仍然不變:只要惡意管理員不想讓您檢測到,您就無法有效檢測到。這類用戶總有辦法隱藏他的蹤跡,讓他的所作所爲看起來像是別人做的。

從這一點看來,定律 無疑仍然適用,至少在某種程度上仍然適用。對計算機具有萬能權限的人一旦心術不正,您的計算機就不再是自己的計算機了。計算機是否安全取決於管理員是否值得信任這句話,還真是一點也沒錯。

不過,還需要考慮其他重點。首先,從計算機的角度來看,管理員的概念不但包含被賦予該角色的人員本身,也包含該角色安全性範圍內運行的任何軟件。此外,管理員的角色還包括任何這類軟件的任何編寫人員。

這一點非常關鍵。定律 所說的計算機是否安全取決於管理員是否值得信任這句話,其意義其實遠遠超過字面意義。請務必謹記,就計算機而言,管理員代表的是在系統管理用戶安全性範圍內運行的任何程序。這與用戶是否有意運行該代碼,或者有意假借它進行破壞都沒有關係。

這一點非常重要,因爲直到最近,一般用戶才能以非管理員的身份操作基於 Windows 的計算機。這是 Windows Vista 中用戶帳戶控制 (UAC) 的主要目的。即使如此,用戶的系統管理範圍和非系統管理範圍之間也沒有安全界限。因此,只要可能成爲管理員(而不僅是目前身爲管理員),任何用戶都適合定律 6

因此,唯一不受定律 限制的方法,就是不成爲管理員,而只以標準用戶身份操作。遺憾的是,就連 Windows Vista 也沒有將這一項設爲默認值,許多原始設備製造商 (OEM) 甚至將 UAC 都一併禁用了。

但是,UAC 在未來並沒有什麼隱憂。UAC 最明顯的特色是它的提升權限過程,如圖 2 所示。但最重要的策略性好處,並不是提升到管理員權限,而是即使原來不是管理員,也能有效操作計算機。Windows Vista 進行了好幾項改進才取得了這種效果。例如,現在即使不是管理員也可以更改時區,這樣在外旅行的人就不必非成爲管理員不可,這一點與早期版本的 Windows 完全不同。只要勇往直前,就有更多進步的機會。

圖 2 UAC 最廣爲人知,但也可能是最不重要的功能就是提升權限提示(單擊可獲得大圖)

定律 不但現在適用,以後也仍然適用。但是,非系統管理用戶也能操作計算機的這項轉變,是定律 的主要調節因素之一。第二個因素並不是什麼新概念,那就是:強制訪問控制系統。

強制訪問控制系統中的對象都附有標籤,而且重新給對象貼標籤的規定也相當嚴格。軟件會將安全性應用到與其標籤一致的對象,但並不使用管理員的直接控制權。嚴格的說,在目前的實現中,管理員通常可以採取各種不合法的步驟取代這些控制權。

不過,有朝一日我們也許能夠限制管理員的行爲。但即使我們可以限制管理員的行爲,您也可能認爲那些用戶不再是名符其實的管理員。因此,定律 絕對經得起考驗。

定律 7:加密數據是否安全取決於解密密鑰。

定律 大概是所有定律中爭議最少的一條了。加密經常被視爲許多安全性問題的萬靈丹。事實上,儘管加密在安全性領域是很有價值的工具,但對於我們所面臨的大部分問題來說卻非如此,現在不是,以後也不會是。

不管您到哪裏,加密總是如影隨形。在 Windows 中,加密用在密碼、文件、網絡漫遊以及身份驗證這些方面。雖然並非所有加密都可以還原,但是像加密文件系統 (EFS) 以及存儲的密碼和用戶名稱所用的憑據緩存,都是很重要的可逆加密,如圖 3 所示。

圖 Windows Vista 中的憑據緩存受加密保護(單擊可獲得大圖)

EFS 和憑據緩存都受用戶密碼所派生的加密密鑰保護。其中包括多層含義。首先,如果用戶密碼被重設(不輸入舊密碼,直接設爲新密碼),除非有指定的修復密鑰,否則存儲在這些位置的所有數據都會丟失。

但更重要的是,雖然加密本身所用的密鑰和協議相當強大,密鑰的安全性還是取決於用戶的密碼。換句話說,數據安不安全,就看密碼強不強。密碼事實上是一種解密密鑰,即使在這個特定示例中,密碼只是輔助的解密密鑰(這表示它負責將另一個解密密鑰解密),但仍然不改它是解密密鑰的事實。

這可以說是最關鍵的一點。這幾種依賴鏈在 IT 領域相當普遍。幾年前曾經有人對 VeriSign 運行一種社交工程***,並且因此以 Microsoft 的名義取得了兩個代碼簽名證書。代碼簽名證書實際上是一種解密密鑰,目的是驗證證書中所命名的實體具有加密密鑰。

但是在這種情況下,要求得到證書的人,並不是證書中所命名的實體。換句話說,現在***者的簽名密鑰用的是另一個人的名字。這些密鑰也許很安全,不過一旦您分析依賴鏈的其餘部分時,就會發現嚴重錯誤。

而這證明了一點:加密密鑰對於數據安全性至關重要,但是保護加密密鑰本身安全的,很可能是極弱的密碼。我看過太多系統將實現器構建在能想出的最強的加密上,並且用另一種安全措施來保護加密密鑰,但卻未意識到第二層保護暗藏了巨大的漏洞。在實現任何加密時,您必須分析整個保護鏈。只有加密本身是無法保護數據安全的。

因此,定律 也仍然適用。它是 10 條定律中最無懈可擊的一條。事實上,它是這個行業中最接近物理學定律的一條。同時,它也提醒我們,分析敏感數據的整個保護鏈可以說是我們的良師益友。因此,即使密鑰沒有最強的保護也無所謂,只要那些密鑰所保護的數據只要求較低層保護就行了。

結論

到目前爲止,安全性的十個永恆定律已經討論到第 條。每一條重新審視過的定律在多年之後仍然全部適用,而且短期之內似乎也不會被有力地證明是錯的。

事實上,這些定律所展示的,都是令人印象深刻的預見。唯一有點站不住腳的到目前爲止只有第 條,不過我在前面也提到過,即使如此,它還是經得起考驗。

下個月我會討論第 8和 10 條定律,並且做個總結。另外我也會評論這些定律可能無法涵蓋所有安全內容中的哪些內容。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章