安全性監控重新認識安全性的十大不變法則,第 2 篇

Jesper M. Johansson

目錄

第 4 條法則:倘若您容許不肖份子將程式上載到您的網站,您的網站就淪陷了。
第 5 條法則:弱小的密碼也能造就強大的安全性。
第 6 條法則:電腦安不安全,就看系統管理員值不值得信任。
第 7 條法則:加密資料安不安全,就看解密金鑰安不安全。
結論

在上月份的《TechNet Magazine》中,我發表了三篇系列報導的第一篇,重新審視大家耳熟能詳的<安全性的大十不變法則>一文。我希望在它們初次受到肯定的八年之後重新加以評估,看看它們是否仍然適用 — 換句話說,就是看看它們是否「經得起考驗」(您可以在microsoft.com/technet/archive/community/columns/security/essays/10imlaws.mspx 找到本系列的第一篇)。

第一篇的評估證實前三條法則仍然適用。接下來的這一篇將繼續檢視第四條以後的法則。而下個月的最後一篇除了討論最後三條法則之外,還將根據八年來的後見之明,提出一些新的看法。

第 4 條法則:倘若您容許不肖份子將程式上載到您的網站,您的網站就淪陷了。

第 4 條法則聽起來似乎有點奇怪,畢竟其他法則都相當高階,講述的都是一般功能,而非特定服務。前三條法則都在描述電腦淪陷的案例,第 4 條法則談的卻是網站。

其實,要瞭解第 4 條法則,必須先瞭解過去的歷史背景。十大法則最初是在 2000 年發表。當時網路才剛剛興起,還不夠成熟,就連 Amazon 和 eBay 這類網站也尚在開發階段。雖然入侵程式在網站上執行任意命令已是司空見慣的事,但卻鮮少有人修補它們。

因此 Microsoft 很可能也把第 4 條法則視為必要的公開聲明,亦即您必須為您的網站服務負責。但是當 Nimda 在 2001 年 9 月出現之後,卻給了這種想法一記當頭棒喝。Nimda 是一種分進合擊的網路蠕蟲,它所採取的其中一種散佈方式,是讓防護不足的網站受到感染,然後竄改那些網站,植入蠕蟲。

網站破壞途徑 (defacement) 之一也是在第 4 條法則的時間範圍內崛起。Attrition.org 就是從那時候起,開始執行許多破壞行為 (attrition.org/mirror/attrition/months.html)。許多網站都曾有過這些問題,其中不乏知名的網站。就連德高望重的安全性訓練機構 SANS Institute,其首頁也曾經遭到破壞。[圖 1] 所顯示的,是 1998 年 10 月美國亞利桑那州網站的破壞案例。

fig01.gif

[圖 1] 亞利桑那州網站的破壞案例 (按一下以放大影像)

當初問題就出在網站遭到破壞時,鮮少有人看清事實的真相。大家總認為只要除掉搞破壞的網頁,就能回到正常生活。於是有本事的人,都忙著修補不肖份子所利用的漏洞 (當然還得有辦法找到那個漏洞才行)。

大家都沒有看到事情的全貌。第 4 條法則的目的,就是訓練大家思考當網站遭到破壞時可能會發生什麼事,而不是已經發生什麼事。

只可惜它沒有得到預期的效果。儘管第 4 條法則已經推出,但是一直到 2004 年,我還是得疲於回答大家這個問題: 「不是只要移除駭客建立的網頁,就能夠恢復正常商業運作了嗎?」我一向不吐不快,所以就寫了一篇叫做<救命啊!我被駭客入侵了,怎麼辦?>的文章 (technet.microsoft.com /en-us/library/cc512587.aspx),來糾正這些錯誤的觀念。

但問題是,第 4 條法則在今日是否仍然站得住腳呢?當不肖份子能夠將程式上載到您的網站時,就表示他已經確實佔領您的網站了嗎? 說得更仔細一點,是佔領您的網站,還是佔領您的訪客,還是兩者都有呢?第 4 條法則並沒有明確說明這一點,因此在此我要好好分析一下 。

關於不肖份子是否佔領您的網站這一點,答案是肯定的。倘若您容許不肖份子將程式放在您的網站上,您的網站就被他佔領了 (不過仍有一些例外,我待會兒會加以說明)。通常在一般網站上,不肖份子可以藉由上載程式達到兩個目的,而他能夠上載到您的網站,也代表一個非常大的隱憂。

第一個目的就是命令您的網站為他服務。如果有人打算散佈像兒童色情圖片這種不法內容,那麼要放在哪裡比較不會被抓包呢?想必您的網站應該會比他自己的網站更加理想吧。

第二個目的就是控制網站背後的系統。當然囉,這得看他是否能夠在您的網站伺服器確實執行程式而定。光是讓程式留在那裡按兵不動,並不會產生任何作用。但是如果不肖份子可以執行這個程式,那就表示他已經確實佔領您的網站,不但可以支使網站為他服務,還可以利用網站控制其他事情。

而我剛剛提到的隱憂,其重要性甚至遠遠超忽於此。在<救命啊!我被駭客入侵了,怎麼辦?>這篇文章當中,我努力想傳達的重點是,您不知道不肖份子在入侵之後可能做了哪些事。如果他已經能夠把自己的內容放到您的網站上,那麼您要問的就是他還能做哪些事。

答案可能有很多種,而這正是本案最關鍵的部分。倘若不肖份子能夠在您網站背後的伺服器上執行程式,那麼他已經完全可以掌控這個網站以及網站所做的事了。也就是說,這個網站再也不屬於您的了。

至於他是否會入侵造訪網站的訪客,那就很難說了。90 年代末期的瀏覽器隨處可見安全漏洞,但是到了 2004 年左右,情況已經有了明顯改善。像 Internet Explorer 和 Firefox 這兩種現今主要的瀏覽器,在安全性方面已經相當強固了。事實上,比起 90 年代的瀏覽器,現今的瀏覽器可說是名符其實的安全性堡壘。

不肖份子能不能夠入侵您的訪客,多半取決於兩件事。第一件事是瀏覽器有沒有能夠入侵的漏洞呢?也許有吧,不過比起以前已經少得多了。第二件事是不肖份子能不能說服使用者露餡呢? 答案常常是肯定的。

多數使用者都會乖乖安裝網站叫他們安裝的東西,這個問題非常嚴重,因為這是無法用技術解決的。我曾在 2008 年 7、8 和 9 月份的《安全性監控》系列文章當中討論過這個問題。關於第 4 條法則,很不幸,不肖份子要入侵您訪客的機率是相當高的。

之前我提過的例外狀況應該不難猜到。現今網站所做的事,在 90 年代是很難預測的。比方說,現在像 Microsoft SharePoint 這樣的內部共同作業網站相當普遍,只要具備適當的權限,任何人都可以將程式上載到這類網站,但這不表示該網站或任何來訪的使用者都會遭到入侵。那純粹是該網站的用途。就某種程度來說,只要具備存取該網站的權限,都是可以信任的使用者。

另外就是分享軟體網站。雖然過去曾有惡意軟體被發佈到那些網站,但它們還是堅持分享軟體的原則。這不表示任何使用者都會遭到入侵。簡單的說,這些網站都備有防衛措施可以確保自身安全,使用者也不會因為來訪而自動受到侵擾。我認為這個例外狀況就足以確認這個規則了。因此,儘管有些網站在設計之初就容許使用者 (無論好壞) 上載程式,但是第 4 條法則仍然成立 (至少在立意上仍然成立)。

第 5 條法則:弱小的密碼也能造就強大的安全性。

多年來密碼已經成為我的最愛。密碼 (更籠統的說,是分享的祕密) 是一種驗證對象的好方法。但是它們有個小小的問題:那就是只要一面對人性,就會完全瓦解。

在分時運算 (time-sharing computing) 剛剛問世的太平時代,區別使用者的需求逐漸明顯。系統需要找出方法來區別張三和李四的資料。在理想的情況下,張三應該有辦法防止李四讀取他的資料 (雖然這個要求相當基本)。

解決方法是使用者帳戶和密碼。過去我們是一個系統一個帳戶,以及一個密碼,而且密碼通常都是選自下列一種名稱:

  • 其中一個孩子的名字
  • 配偶的名字
  • 寵物的名字
  • 「God」 (如果您是超級使用者的話)

時間快轉 30 年,現在我們擁有的是幾百個帳戶 — 它們各自分佈在網際網路的網站,以及若干台電腦上。每一部系統都告訴我們,不能在其他任何一個系統上使用同樣的密碼。同時,密碼最好不要太弱,不要寫在紙上,而且每隔 30 到 60 天就要更改一次。

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

  • 其中一個孩子的名字,後面再加上數字 1
  • 配偶的名字,後面再加上數字 1
  • 寵物的名字,後面再加上數字 1
  • 「GodGod11」(只有超級使用者才用)

這 30 年來我們的進步並不如預期。研究人員仍在為密碼尋找適合的研究領域;如需相關資訊,請參閱《PC World》的<到底是密碼太多,還是腦力不夠>(網址為 pcworld.com/businesscenter/article/150874/too_many_passwords_or_not_enough_brain_power.html)。

就一般使用上來說,密碼顯然是相當弱勢的安全形式。不過即使如此,還是可以確保密碼的使用安全。比方說,您可以建立強大的密碼,並且將它們寫在紙上 — 這種做法本身並無任何問題。但是,充斥在周圍的不良建言最後總會說服使用者認為,在每一個地方使用相同的密碼,好過把密碼寫在紙上。

於是,所有的安全性最終卻變成一個弱點。我們以公司的虛擬私人網路 (VPN) 存取為例。我曾經討論過各種 VPN 技術;討論過廠商對於它們強得驚人也慢得驚人的密碼編譯優點所做的評估;以及廠商為了不讓攻擊者找到封包而輪換加密金鑰,並且將它們加密。

但這些討論內容完全沒有切中要點。如果以目前能用的運算技術,還得花上幾百萬個世紀才能破解一個封包資料流,攻擊者才不會做這種傻事呢。根據重要性順序來減緩網路速度,就為了求得必須花幾百萬個世紀才能破解的密碼編譯,這麼做到底有什麼意義呢? 坦白說,如果幾百萬個世紀 (甚至是幾萬個世紀) 以後的人類真的有辦法把我的工作用郵件解密,那就隨他去吧。

密碼編譯真是這麼值得攻擊的弱點嗎? 我相信攻擊者絕對會攻擊容易下手的弱點 — 這個弱點就是使用者常常選擇我剛剛提到的幾種名稱作為使用者密碼。

如果所有使用者都選擇一個六字元或八字元的密碼,就算密碼編譯再強也很難不被攻破,於是我們只好尋求更強的驗證方式,例如智慧卡和單次用 PIN 碼產生器。

這兩種方法雖然可以提供強而有力的改善,卻不見得能夠提升安全性。比方說,萬一智慧卡掉了或忘了帶出門怎麼辦?而這又是很常發生的事。單次用 PIN 碼產生器大小正好可以放在卡片夾,掛在脖子上也很好看。下次您要到對街咖啡店喝杯咖啡時,不妨看看有沒有人會盯著您現在用的 PIN 卡,大聲念出您的使用者名稱,然後用力猜測機率渺小的隨機密碼,好利用您的身份連接貴公司的網路 (這也是唯一能夠連接貴公司網路的途徑)。

第 5 條法則是最適合今日的法則,而且今後也仍然適用。但我認為它可以大幅通用化,不只弱小的密碼能夠造就強大的安全性,我們可以更籠統的說:「弱小的驗證」或甚至「弱點」都能造就強大的安全性。

IT 安全性專家多半都很自責沒有回頭看清全貌。我們常會埋首在只需強大的安全性技術就能夠輕鬆解決的某個問題點,卻不去瞭解其實還有一些系統弱點有待減輕、甚至有待思考,以及需要借助所有我們執行的技術加以改善。

舉個例說,許多公司積極管制使用者所用的卸除式裝置,卻放任輸出安全殼層 (Secure Shell,SSH) 和加密的電子郵件連線不管。如果您把即將傳輸的資料加密,甚至連自己都看不到資料,那麼限制卸除式裝置到底能夠降低多少資料遺失的機率呢? 如果我們安全性專家還想繼續生存並繁榮昌盛的話,就必須解決這個重大問題。

第 6 條法則:電腦安不安全,就看系統管理員值不值得信任。

我很訝異即使到了今日,我們還在看只對系統管理員不利的入侵報告 — 更糟的是,還在看只對系統管理員有利的入侵報告 (如果您已經是系統管理員的話)。我在撰寫本文時,人正坐在從 Black Hat 2008 會議回程的機場。就連在那裡也看到一篇簡報,開頭寫著:「只要具有根存取權,就能夠以接下來我要說明的方式控制系統。」

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

其實道理很簡單:只要是系統管理員 (或 Root、Superuser 還是其他稱呼都行),就能在該系統通行無阻,為所欲為!

當然,不管這類惡意使用者想要做什麼事,他們都能找到更誇張、更狡猾的方式得逞,但是基本道理仍然不變:只要惡意系統管理員不想讓您偵測到,您就無法有效偵測到。這類使用者就是有辦法隱藏他的踪跡,讓他的所作所為看起來像是出自他人之手。

從這一點看來,第 6 條法則無疑仍然適用,至少在某種程度上仍然適用。對電腦具有萬能權限的人一旦心術不正,那部電腦就只有淪陷一途了。「電腦安不安全,就看系統管理員值不值得信任」這句話,還真是一點也沒錯。

不過,需要考慮的重點還不只於此。首先,從電腦的角度來看,系統管理員的概念不但包含被賦予該角色的人員本身,也包含該角色安全性範圍內執行的任何軟體。不只如此,系統管理員的角色還包括任何這類軟體的任何編寫人員在內。

這是非常關鍵的一點。第 6 條法則所說的「電腦安不安全,就看系統管理員值不值得信任」這句話,意義其實遠遠超過字面所見。請務必切記,就電腦而言,系統管理員代表的是在系統管理使用者安全性圍內執行的任何程序。這與使用者是否有意執行該程式碼,或者有意假借它行損毀之實都沒有關係。

這一點非常重要,因為直到最近,一般人才能夠以非系統管理員的身分操作一部具有 Windows 功能的電腦。這是 Windows Vista 中使用者帳戶控制 (UAC) 的主要目的。即使如此,使用者的系統管理範圍和非系統管理範圍之間,並沒有安全性界限。說到底,只要可能成為系統管理員 (而不僅是目前身為系統管理員),任何使用者都適合第 6 條法則。

因此,唯一不受第 6 條法則限制的方法,就是不要成為系統管理員,而只以標準使用者身分操作。只是,就連 Windows Vista 也沒有把這一項定為預設值,許多原始設備製造商 (OEM) 甚至連 UAC 都一併停用了。

但是,UAC 在未來並沒有什麼隱憂。UAC 最明顯的特色是它的提高權限程序,如 [圖 2] 所示。但是最重要的策略性好處,並非提升到系統管理員權限,而是即使原來不是系統管理員,也能夠有效操作電腦。Windows Vista 一共做了幾項改善,才達到這個境界。舉個例說,現在即使非系統管理員也可以更改時區,這麼一來,在外旅行的人就不必非成為系統管理員不可,這一點與舊版的 Windows 完全不同。只要勇往直前,就有更多進步的機會。

fig02.gif

[圖 2] UAC 最廣為人知,但也可能是最不重要的功能,就是提高權限提示 (按一下以放大影像)

第 6 條法則不但現在適用,以後也仍然適用。但是,非系統管理使用者也能操作電腦的這項轉變,是第 6 條法則其中一個主要調節因素。第二個因素您應該已經聽過,那就是:強制存取控制系統。

強制存取控制系統中的物件都附有標籤,而且重定標籤的規定也相當嚴格。軟體會將安全性套用到與其標籤一致的物件,但並不使用系統管理員的直接控制權。嚴格的說,系統管理員通常可以採取各種不合法的步驟取代這些控制權,來進行目前的實作。

不過,有朝一日我們也許能夠限制系統管理員的行為。但即使我們可以限制系統管理員的行為,您也可能認為那些使用者不再是名符其實的系統管理員。因此,第 6 條法則篤定經得起考驗。

第 7 條法則:加密資料安不安全,就看解密金鑰安不安全。

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

不管您到哪裡,加密總是如影隨形。Windows 加密是用在密碼、檔案、驗證以及網路漫遊等方面。雖然並非所有加密都可以還原,但是像加密檔案系統 (EFS) 以及儲存的密碼和使用者名稱所用的認證快取,都是很重要的可還原加密,如 [圖 3] 所示。

fig03.gif

[圖 3] Windows Vista 中的認證快取是受加密所保護 (按一下以放大影像)

EFS 和認證快取都是由使用者密碼所衍生的加密金鑰負責保護。其中牽涉的層面很廣。首先,如果使用者密碼被重設 (不輸入舊密碼,直接設為新密碼),除非有指定修復金鑰,否則所有儲存在這些位置的資料都會全部遺失。

但更重要的是,雖然加密本身所用的是相當強大的金鑰和通訊協定,金鑰的安全性還是得視使用者的密碼而定。換言之,資料安不安全,就看密碼強不強。密碼事實上是一種解密金鑰,即使在這個特定案例中,密碼只是次要的解密金鑰 (也就是說,它負責將另一個解密),仍然不改它是解密金鑰的事實。

這一點可以說是最關鍵的一點。這幾種相依性鏈結在 IT 領域相當普遍。幾年前曾經有人對 VeriSign 執行一個社交工程攻擊,並且因此以 Microsoft 的名義取得兩個程式碼簽署憑證。程式碼簽署憑證實際上是一種解密金鑰,目的是驗證憑證中所指名的實體具有加密金鑰。

但是在這個案例當中,要求憑證的人,並不是憑證所指名的實體。換言之,現在攻擊者的簽章金鑰用的是另一個人的名字。這些金鑰也許很安全,不過一旦您分析相依性鏈結的其餘部分時,就會發現嚴重錯誤。

而這證明了一點:加密金鑰對於資料安全性至關重要,但是保護加密金鑰本身安全的,很可能是極為弱小的密碼。我看過太多系統把實作器建構在最強的加密上,並且以另一種安全措施來保護加密金鑰,但它們卻不知道第二層保護暗藏了巨大的漏洞。在實作任何密碼編譯時,您必須分析整個保護鏈結。加密本身是無法保護資料安全的。

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

結論

到目前為止,安全性的十大不變法則已經討論到第 7 條。每一條重新檢視過的法則在多年之後仍然全部適用,而且短期之內似乎也沒有大幅翻盤的可能。

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

下個月我會檢視第 8、9 和 10 條法則,並且做個總結。另外我也會評論這些法則可能無法整體涵蓋的部分。

Jesper M. Johansson 是負責安全性軟體的軟體架構設計人員,也是《TechNet Magazine》的特約編輯之一。他擁有管理資訊系統 (MIS) 的博士學位,研究安全性長達 20 多年,是 Microsoft 在企業安全性領域的最有價值專家 (MVP)。其最新著述為《The Windows Server 2008 Security Resource Kit》。