adobe acrobat pdfepaper.gotop.com.tw/pdfsample/a273.pdf ·...

16
如果讀者認為新聞標題代表某個趨勢的話,那麼現在正是電腦安全迷值得關切的時刻。安全之美》一書付印之際,我看到了一則新聞,一個軟體能開啟麥克風和攝影機,竊 取資料,且已經在 103 個國家的 1200 台電腦上被發現,特別是大使館和敏感的政府機 關。另一方面,法庭支持美國調查人員的權利,他們不需要授權就可以查看你的電話和上 網記錄(只要談話的另一端不在美國境內)。本週例行會出現的漏洞包括在 Adobe Acrobat Adobe 閱讀器上的緩衝區溢出漏洞,一個目前眾所周知的漏洞,在你開啟攻擊者的 PDF 文件後,他們就可以利用你的權限,在系統上執行任何程式。 標題當然不是一個好的趨勢指標,因為長期運轉的歷史是藉由精緻的發展演化成型,但只 有少數像本書作者,一群先導的安全專家才會注意到這個現象。目前的安全威脅走向與反 應,都可在本書中看到。 所有我在第一段提到的驚世新聞,在安全領域上只算是正常業務。因此我們都應該對安全 的部分趨勢感到憂心才是,此外,我們還需要尋找新的和不那麼引人注目的漏洞。這本書 的作者,幾十年來,一直在最前線尋找由我們不良工作習慣所營造出的弱點,並建議用非 傳統的方式來解決問題。

Upload: others

Post on 20-Jul-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Adobe Acrobat PDFepaper.gotop.com.tw/PDFSample/A273.pdf · 本週例行會出現的漏洞包括在Adobe Acrobat 和Adobe 閱讀器上的緩衝區溢出漏洞,一個目前眾所周知的漏洞,在你開啟攻擊者的

如果讀者認為新聞標題代表某個趨勢的話,那麼現在正是電腦安全迷值得關切的時刻。在

《安全之美》一書付印之際,我看到了一則新聞,一個軟體能開啟麥克風和攝影機,竊

取資料,且已經在 103 個國家的 1200 台電腦上被發現,特別是大使館和敏感的政府機 關。另一方面,法庭支持美國調查人員的權利,他們不需要授權就可以查看你的電話和上

網記錄(只要談話的另一端不在美國境內)。本週例行會出現的漏洞包括在 Adobe Acrobat和 Adobe 閱讀器上的緩衝區溢出漏洞,一個目前眾所周知的漏洞,在你開啟攻擊者的

PDF 文件後,他們就可以利用你的權限,在系統上執行任何程式。

標題當然不是一個好的趨勢指標,因為長期運轉的歷史是藉由精緻的發展演化成型,但只

有少數像本書作者,一群先導的安全專家才會注意到這個現象。目前的安全威脅走向與反

應,都可在本書中看到。

所有我在第一段提到的驚世新聞,在安全領域上只算是正常業務。因此我們都應該對安全

的部分趨勢感到憂心才是,此外,我們還需要尋找新的和不那麼引人注目的漏洞。這本書

的作者,幾十年來,一直在最前線尋找由我們不良工作習慣所營造出的弱點,並建議用非

傳統的方式來解決問題。

Page 2: Adobe Acrobat PDFepaper.gotop.com.tw/PDFSample/A273.pdf · 本週例行會出現的漏洞包括在Adobe Acrobat 和Adobe 閱讀器上的緩衝區溢出漏洞,一個目前眾所周知的漏洞,在你開啟攻擊者的

序  vii

為什麼安全是美麗的

我請安全專家 John Viega 幫忙尋找本書的作者,並請他們不要因為一般電腦用戶面對安全

的態度而有挫折感。一般用戶除了入侵和盜竊等駭人聽聞的敘述外,大都認為安全是枯燥

乏味的。

安全,對許多人來說,就像是系統管理員這類管家婆,整天嘮叨著提醒建立備份文件夾,

要不就是對話方塊永無止境的出現在電腦畫面上,要求輸入密碼後才能瀏覽網頁。然後辦

公室的工作人員把目光轉向放在辦公桌旁的筆記(筆記就放在預算表上面,辦公室管理員

告訴他們應該把記有密碼的筆記鎖在抽屜才對),邊罵邊讀密碼。如果這是安全性,有誰願

意進入這樣的職業生涯?或者購買 O'Reilly 出版的書?或花上超過 30 秒的時間思考呢?

對負責建立安全系統的人來說,努力似乎沒什麼希望。在他們的網站沒有人與之協同合 作,企業管理者拒絕在安全領域多付出分毫資源。總是為永無止境的零日漏洞(一發現漏

洞,當天修復)和程式語言工具中未修補的漏洞疲於奔命,程式設計師和系統管理員都因

此而對其他事務鬆懈。

這也就是為什麼在安全領域的書籍不好賣(雖然在過去的一年或兩年,銷售已稍有提 升)。教人駭入系統的書比教人保護系統的書,更受讀者青睞,這是一個令人害怕的趨勢。

那麼,這本書將改變這種狀況。它會展現,安全是你可從事的最令人振奮的職業。安全並

不乏味、不官僚也不拘束。事實上,安全技術除了想像力之外,別無所求。

我多年來所編輯有關程式設計的書,大都會有安全的章節。這些章節肯定是有益的,因為

作者可教導讀者一些一般性的原則以及養成良好的操作習慣,但我很不喜歡這樣的方式,

好像在安全主題的周圍畫了個分界線。灌輸太多對安全普通的看法和諸如一些後見之明的

論調,本書剔除了這些中看不中用的內容。

John 為本書挑選了一些作者,他們一而再,再而三呈現安全領域的精髓,並告訴讀者一些

新的觀念。一些作者設計了一些成千上萬個體賴以運作的系統,有些則在大型公司擔任高

階職務,另有些在政府機構工作。他們所有的人都在努力找出問題和解決之道,這都超出

了我們理解的範圍,相信從現在開始的幾年,我們會不斷談論到這些議題。

作者告訴我們,有效的安全必須隨時保持警覺。在認知和組織結構,跨越了技術的界 限。在安全領域的黑帽成功精美地施展其創造力 ; 因此,作為守護者的我們,也必須有相

對的創意。

Page 3: Adobe Acrobat PDFepaper.gotop.com.tw/PDFSample/A273.pdf · 本週例行會出現的漏洞包括在Adobe Acrobat 和Adobe 閱讀器上的緩衝區溢出漏洞,一個目前眾所周知的漏洞,在你開啟攻擊者的

viii  序

在本書作者的肩上,負有世界資訊安全的重責,要作者忙裡抽空寫這本書,可能會讓他們

遭到責難。事實上,其中許多作者在工作與寫書之間平衡的拿捏,確實感受不少的壓力。

但所花的時間是值得的,因為這本書可以促進完成更大的目標。如果能激起更多人對安全

領域的關注,決定做進一步研究,並引起企業對於那些試圖進行組織變革、使企業獲得更

多保護的人,給予更多的支持,那麼本書作者所做的努力也就沒有白費了。

2009 年 3 月 19 日,參議院商業、科學暨運輸委員會舉行了聽證會,目的在討論由於缺乏

資訊技術專業人士,對國家網路所造成的傷害。目前對激勵學生和專業人士在安全問題產

生興趣與研究,實有迫切需要,這本書即代表了朝著這個目標邁進的一步。

本書適合的讀者

這本書對於那些在電腦技術領域感興趣、想在資安這一區塊佔有優勢的人而言,是個有用

的工具。本書涵蓋的讀者群包括在職涯探索的學生、有一些程式背景或想對電腦先進運算

適度理解的人。

作者在解釋安全技術難易度部分,即便是電腦新手,也能對安全攻擊和防禦的運作有所了

解。專業的讀者則可享受在書中的專業討論,擴展他們在安全領域的知識深度,並為進一

步研究提供指導方針。

捐款

本書的作者將版稅捐贈給網際網路工程任務組(IETF),一個對網際網路發展有重要影

響的組織,具有一個開明與自組織治理的迷人組織模型。網際網路若缺乏科學的辯論、

靈活的標準制定和 IETF 成員的廣泛協調,網際網路現況將難以想像。在他們自己的網

頁上有一段描述“一個屬於網路設計師、操作人員、供應商和研究人員的開放式大型 社群”,O'Reilly 會將版稅送到網際網路協會(ISOC),ISOC 組織是 IETF 長期資金來源與

支持者。

本書編排方式

本書各章的順序無任何特殊的安排規則,主要在提供豐富的閱讀體驗,希望能以亮眼的方

式開啟讀者的新視角。主題類似的章節約略以連續方式安排如下:

Page 4: Adobe Acrobat PDFepaper.gotop.com.tw/PDFSample/A273.pdf · 本週例行會出現的漏洞包括在Adobe Acrobat 和Adobe 閱讀器上的緩衝區溢出漏洞,一個目前眾所周知的漏洞,在你開啟攻擊者的

序  ix

第 1 章 心理安全陷阱,Peiter “Mudge” Zatko

第 2 章 無線網路:社交工程沃土,Jim Stickley

第 3 章 安全計量之美,A. Nichols

第 4 章 安全裂痕的地下經濟,Chenxi Wang

第 5 章 美麗交易:重新省思電子商務安全,Ed Bellis

第 6 章 線上廣告的安全性:新曠野西部的警長和盜馬賊,Benjamin Edelman

第 7 章 PGP 信任網站的演化,Phil Zimmermann and Jon Callas

第 8 章 開放源碼的客端蜜罐—先發制人的客端侵害偵測,Kathy Wang

第 9 章 明日資安的槓桿與齒輪,Mark Curphey

第 10 章 設計安全,John McManus

第 11 章 迫使企業關注:未來有安全的軟體嗎?,James Routh

第 12 章 不好了 ! 資安律師來了?,V. Sabett

第 13 章 日誌操控之美,Anton Chuvakin

第 14 章 事件偵測:找出另外的 68%,Grant Geyer and Brian Dunphy

第 15 章 不用真的資料做真的事情,Peter Wayner

第 16 章 PC 安全劇場,Michael Wood and Fernando Francisco

本書編排慣例

本書中使用了以下字體原則:

楷體字(Italic)

表示新的術語、網址、檔名和 Unix 工具。

定寬字(Constant width)

表示電腦上檔案和程式內容。

Page 5: Adobe Acrobat PDFepaper.gotop.com.tw/PDFSample/A273.pdf · 本週例行會出現的漏洞包括在Adobe Acrobat 和Adobe 閱讀器上的緩衝區溢出漏洞,一個目前眾所周知的漏洞,在你開啟攻擊者的

在我專攻軟體及其所帶動的特色期間,很多同事說我使用的方法不符合標準。聽到這樣的

批評,我覺得有些驚訝,這些方法在我看來應該是既直接又合乎邏輯的。相對的,我覺得

學術方法若過於抽象,很難在現實世界中的應用獲得廣泛的成功。這些更傳統的教條就像

是亂槍打鳥,沒有標的與焦點,要不就是與目標背道而馳,花費數百個小時做逆向工程、

追蹤應用程序,(希望)以在軟體大賣前先逮到它們的弱點。

現在,請不要弄錯方向。我並未責難前面提到的技術,事實上,我認為它們在發現弱點和

利用弱點這個領域是相當重要的工具。不過,我相信在運用一些捷徑、另類觀點、強化等

措施上,可以不用這些方法。

在這一章中,我將討論其中的一些不同的觀點,以及這些觀點如何能夠幫助我們,深入這

些資安專業開發者建構程式碼的心路歷程。

為什麼想深入開發人員的思維?原因很多,但在本章節中,我們將集中在加諸於程式設計

者的各種限制。從安全的角度看,這些問題往往會造成不理想的系統,透過了解一些開發

者在寫程式時的環境、心理和哲學的框架,我們可更清楚了解系統的哪些地方有導致攻擊

的弱點。可以的話,我將分享我手邊有的一些趣事,作為探討問題的範例。[1]

我把重點放在過去幾年一些大規模的環境,如大型企業,政府和它們的各個附屬機構,甚

至是州政府。雖然許多元素都適用於較小的環境,甚至個人,但我想用更大的範圍顯示這

些議題,以提供一個更廣闊的全貌。勾勒這個大的社會全貌所需的大畫筆需要更一般化,

你或許可以找到與實例相矛盾的例外。限於篇幅,我不會再舉反例回應。

心理安全陷阱Peiter“Mudge"Zatko

第一章

Page 6: Adobe Acrobat PDFepaper.gotop.com.tw/PDFSample/A273.pdf · 本週例行會出現的漏洞包括在Adobe Acrobat 和Adobe 閱讀器上的緩衝區溢出漏洞,一個目前眾所周知的漏洞,在你開啟攻擊者的

2  第一章

這裡的目的不是要特別強調某項技術,而是談一些導致弱點形成的環境和心理狀況。要真

正明白弱點於何處被邏輯性地引入,則了解加諸於技術執行者的外部影響和限制就變得非

常的重要。雖然對攻擊方而言,這是一個好玩的心智遊戲,可是當防守端也實際參與遊戲

時,就要做一些反向思考,防守者可能會這麼想:a)防止會導致攻擊的錯誤或 b)使用

相同的技術和攻擊者對戰。此時的安全遊戲才像是我認知般,是美麗的。

我的思維傾向可分為三類:(1)習得性失助(Learned Helplessness)和天真 (2)確信陷阱 (3)功能固定。在安全施行和設計上,這三類並未涵蓋所有影響安全的因素,而是一個起

點,以鼓勵進一步認識所建立和所使用系統的潛在安全危險性。

1.1 習得性失助(Learned Helplessness)和天真

社會學家和心理學家們在人類和其他動物身上發現了一個現象,稱為習得性失助 (learned helplessness)。它源於當一個人企圖達成某目標卻不斷遇到挫折,或企圖將自己

從糟糕的處境中拯救出來。最終,動物意識到此具有極大性的破壞而停止擺脫困境的嘗試,

因此變得消極。即使有好的機會降臨或逃脫困境,動物依然被動,而未能妥善地利用它們。

為了說明,即使是有經驗、理性的軟體工程師,也都可能陷入這種令人衰弱的困境,我將

使用一個例子,其中差勁的安全性可追溯至向後相容這個主因。

向後相容對現有技術的部署來說,是一個長期的問題。新技術被建立及部署但卻發現和現

有系統不相容,或和現有系統有很大的差異。

在系統演進的每個點,供應商需要確定他們是否要強行結束現有解決方案的生命週期、提

供遷移路徑或制定一個辦法,使得傳統和現代的解決方案可永久交互運作。所有這些決定

在商業和技術角度已有許多分支。但決策通常緣於商業動機,對開發人員和工程師則歸結

為一項命令註 1, 當這種情況發生,負責研發和實際執行的人,便會有一種印象:決策已定

只好遵從。不會再有進一步的評估或思考。[2]

註 1 或者至少讓開發人員和工程師知道,在這種情況下應該這麼做。

Page 7: Adobe Acrobat PDFepaper.gotop.com.tw/PDFSample/A273.pdf · 本週例行會出現的漏洞包括在Adobe Acrobat 和Adobe 閱讀器上的緩衝區溢出漏洞,一個目前眾所周知的漏洞,在你開啟攻擊者的

心理安全陷阱  3

想像一下,決策已定,在技術替換時要保持與傳統技術的相容性。管理階層進一步裁 定,對傳統技術不再做進一步的發展和支持,以鼓勵現有客戶轉移到新技術。

雖然這樣的決定,在安全方面加重了研發人員的負擔,但研發人員對開發更安全的技術會

特別感興趣。事實上,新技術的開發都有明確的目標,那就是滿足所需要的更大的安全 性,但舊技術仍必須得到支持。在這樣的情況下,會出現什麼安全問題嗎?

有許多不同的方式來實現向後相容性,其中有些比較安全。但是,一旦開發者明白,舊的

較不安全的技術仍要持續,能緩解風險的解決辦法往往就不被考慮。重點是放在新技術,

傳統技術緊緊附著其上(反之亦然),舊技術的影響是不會有人關切的。畢竟,團隊旨在

實施新技術,通常不會發展舊的程式碼,最終目標是要取代傳統的解決方案,不是嗎?

要讓新、舊技術匹配,最直接的方法就是在穩定性和安全強度兩者間提出折衷方案,在本

質上使新、舊系統能同時運作。當開發者不知所措時,等同進入習得性無助的狀態,或者

更糟,該做的都做不到,把舊的漏洞帶到新技術。舊的程式碼壓在他們身上,但他們認

為這不在其職責範圍(即使它影響到新技術的安全,降回到舊系統等級),由於企業的決 策,讓他們覺得做任何事都無能為力。

1.1.1 一個真實的例子:微軟如何啟用 L0phtCrack

幾年前,為了幫系統管理員尋找安全漏洞,我寫了一個密碼破解工具,用來恢復微軟用戶

的密碼。當時它被稱作 L0phtCrack,後來改名為 LC5,之後又被賽門鐵克禁止(誰授權

這麼做),因為有人擔心它可能被國際武器貿易條例(ITAR)視為軍火註 2。許多網路上的

文章和技術書籍的部分章節,都載有 L0phtCrack 程式是如何運作的,但皆未在文中的開

宗明義部分說明為什麼程式要這麼運作。利用微軟 Windows 的漏洞完成的 L0phtCrack 程 式,究竟帶來了什麼潛在的影響呢? [3]

註 2 L0phtCrack 不該就這麼結束。

Page 8: Adobe Acrobat PDFepaper.gotop.com.tw/PDFSample/A273.pdf · 本週例行會出現的漏洞包括在Adobe Acrobat 和Adobe 閱讀器上的緩衝區溢出漏洞,一個目前眾所周知的漏洞,在你開啟攻擊者的

4  第一章

事實上,該工具直接暴露了 Windows 在加密程序中的許多問題。所有這些問題起源於傳

統的 LAN Manager(或 LANMAN)中的雜湊函數,這個舊的函數一直沿用到 Windows Vista 作業系統。它的雜湊表示型式,雖是基於已成熟的資料數據加密標準(DES),但卻

不包含隨機位元。此外,密碼在 LANMAN 是不區分大小寫。此雜湊函數將 14 個字元或

更短的字元拆成兩個 7 位元組的值,再分別對其以相同的密鑰加密,然後連接在一起。正

如我在 1990 年後期在 BugTraq 所描述的基本加密程序,如圖 1.1 所示:

1. 如果密碼少於 14 個字元,則以虛值填滿;若多於 14 個字元,則將多餘的字元截斷。

結果為長度固定是 14 個字元的密碼。

2. 轉換 14 個字元為大寫,並依序拆開成兩個部分,每部份 7 個字元。若原密碼為 7 個

字元或更少,那麼第二個 7 字元將全是虛字元。

3. 轉換每個 7 字元,形成兩個 8 位元組的同位 DES 密鑰。

4. 使用前面提到的兩個密鑰,利用 DES 加密已知常數("KGS!@#$%"),得到兩個輸

出字串。

5. 將上述兩字串結合,形成 LM_HASH 表示式。[4]

1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8 9 10 11 12 13 14

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

1 2 3 4 5 6 7 8 9 10 11 12 13 14

Password

Str2Key

DES [0x4b47532140232425] DES [0x4b47532140232425]

Str2Key

圖 1.1 舊的 LANMAN 演算法摘要

這種組合,從許多技術面來看,都是有問題的。

密碼

Page 9: Adobe Acrobat PDFepaper.gotop.com.tw/PDFSample/A273.pdf · 本週例行會出現的漏洞包括在Adobe Acrobat 和Adobe 閱讀器上的緩衝區溢出漏洞,一個目前眾所周知的漏洞,在你開啟攻擊者的

心理安全陷阱  5

Windows NT 的開發人員都意識到 LANMAN 雜湊函數的弱點,而使用更強的演算法儲存

密碼憑證,此演算法稱為 NT 雜湊。它維持密碼的的大小寫,允許密碼長度超過 14 個字 元,並使用更現代的 MD4 訊息摘要來產生 16 位元組的雜湊值。

不幸的是,Windows 除了儲存強度較強的密碼,同時也儲存強度較弱的密碼,用戶每次登

錄系統,這兩個版本的密碼就會在網路上傳送。透過網路,16 位元組較弱的的 LANMAN 雜湊和 16 位元組較強的 NT 雜湊,都得經過下列處理程序,如圖 1.2 所示:

1. 用空值填充雜湊直到填滿 21 個位元組。

2. 將 21 個位元組,拆成 3 個 7 位元組的子位元組。

3. 將每個子位元組轉換為 8 位元組的同位 DES 密鑰,形成 3 把密鑰。

4. 使用前面提到的 DES 密鑰加密一個以明文透過網路傳送的 8 位元組挑戰資料,形成

3 個輸出。

5. 結合步驟 4 的 3 個輸出,串成一個 24 位元組表示式,然後透過網路發送。[5]

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

0 0 0 0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 0 0 0 0

0 0 0 0

0

0

0

Password hash (either LANMAN or NTLM)

Str2Key Str2Key Str2Key

8-byte parity DES key 8-byte parity DES key 8-byte parity DES key

8-byte output 8-byte output 8-byte output

+

DES 8-byte challenge DES 8-byte challenge DES 8-byte challenge

圖 1.2 透過網路同時處理 LANMAN 和 NT 雜湊

密碼雜湊 (LANMAN 或 NTLM)

Page 10: Adobe Acrobat PDFepaper.gotop.com.tw/PDFSample/A273.pdf · 本週例行會出現的漏洞包括在Adobe Acrobat 和Adobe 閱讀器上的緩衝區溢出漏洞,一個目前眾所周知的漏洞,在你開啟攻擊者的

6  第一章

微軟當然希望客戶升級到新版的 Windows,但卻不敢切斷用戶使用舊版本,甚至連改進到

使用新的雜湊函數都不敢。因為密碼是網路的關鍵組成部分,他們不得不假設,在可預見

的未來,舊的系統仍不了解新的雜湊函數將配有更安全的雜湊,且能繼續連接到系統。

若在系統登錄的兩端使用新的系統與新的雜湊函數,他們可以用 NT 雜湊執行實際上更強

的認證。但舊的有更多漏洞的 LANMAN 雜湊,仍要伴隨這個強韌的 NT 雜湊一起被傳送。

由於不計後果地採取了阻力最小的向後相容策略,微軟完全破壞了先進技術所帶來的新的

安全技術。

L0phtCrack 先破解弱的 LANMAN 密碼編碼,並利用此結果對付儲存在它旁邊安全度更強

的 NTLM 編碼。就算用戶使用長度超過 14 個字元的密碼,被破解的 LANMAN 雜湊仍然

提供密碼的前 14 個字元,剩下的部分長度較短很容易透過推理或暴力攻擊猜到。雖然 NT雜湊是區分大小寫的。但一旦弱版本被破解,具大小寫的密碼仍能在經過 2x 次的嘗試後

得到正確密碼(其中 x 是密碼的長度),因為每個字最多只有兩個選擇(大寫或小寫)。請

記住,x 小於或等於 14,因此 2x 次的嘗試所需時間對現在電腦來說是微不足道的。

雖然 NTLM 網路認證推出了詢答機制,且此機制支援隨機位元,但輸出仍然含有過多的

資訊,攻擊者可以看到並加以利用。來自於原 16 位元組的雜湊值只有前 2 個位元組進入

第三個 7 位元組的組成部分,剩下的部分為虛值。同樣的,只有一個位元組也就是第八個

位元組,從雜湊的前半部進入到第二個 7 位元組的組成部分。

想想會發生什麼事,如果原來的密碼是七個字或更少(一個普通用的常用選擇)。在

LANMAN 雜湊中,第二組的 7 個輸入位元組都將是空值,所以輸出的雜湊從 9 至 16 位元

組永遠是相同的值。NTLM 也有相同的情況。至少,只要很少的功夫,就能確認 24 個位

元組的 NTLM 認證響應其最後 8 個位元組是否來自於一個長度小於 8 個字元的密碼。

總之,現代的安全解決方案其弱點是由舊的 LANMAN 密碼系統竄出,因而降低了整體安

全性,將強韌系統降為普通系統。直到很久以後,經過許多負面安全的宣傳,微軟才推

出了只送出一個雜湊值的功能,預設不是兩者都傳送。後來,甚至停止了將 LANMAN 和

NT 雜湊值儲存在本地系統相鄰的地方。[6]

Page 11: Adobe Acrobat PDFepaper.gotop.com.tw/PDFSample/A273.pdf · 本週例行會出現的漏洞包括在Adobe Acrobat 和Adobe 閱讀器上的緩衝區溢出漏洞,一個目前眾所周知的漏洞,在你開啟攻擊者的

心理安全陷阱  7

1.1.2 密碼和安全認證從開始就可以更好

我舉 L0phtCrack 的故事,是為了突顯一個共同的安全問題。有許多理由支持多種安全的

實現,但其實執行其中最強的一個方案即可,但在很多情況,如前所述,為了支援向後相

容,只好執行多個安全方案。一旦支援舊系統被認為是必不可少的,我們即可預期在協定

和服務中將看到許多不必要的東西存在。

從安全角度看這個議題,就變成了如何做到向後相容,又不會降低新系統的安全性。微軟

天真的解決方案幾乎把所有最糟糕的可能性都嵌入其中:將不安全的雜湊連同安全的雜湊

一起儲存,並在網路上同時傳送這兩個雜湊,即使沒必要仍傳送,讓攻擊者從中得利。

請記住,一個人若在習得性無助的情況下,就會認為自己完全得不到幫助或者也無法依

靠訓練,而不是就現有處境做實務分析。換句話說,有人告訴你:你得不到幫助,你就這

麼輕易相信他說的。以工程角度來看,習得性無助可被公司高層的意向、懶於接受向後相

容(或傳統的客戶需求)或成本資金壓力(感覺的或真實的)等因素誘發。

微軟認為,保留既有舊系統是重要的,因而不願從現有系統移除。在這一過程中,他們做

出的決定,將繼續支持 LM 的雜湊。

但他們採取了第二個關鍵步驟,並透過強制新系統能和新舊兩個協定相容,且不考慮舊系

統的安全問題的情況下,處理舊系統的協定和其與新系統交互作用產生的問題。相反地,

他們要舊系統做一大堆的修補以支援在舊系統使用這瀕臨滅絕的登錄功能。也許這個解決

方案會被拒絕,因為它可能開啟一個不合理的先例,既聲稱此系統已達其生命週期卻又要

給予支持。他們同樣可以選擇不發送新舊雜湊到網路上,使整個系統更現代且更強健。這

將有助於使他們的旗艦“新技術”提供給現實和預期的安全。

因為媒體和客戶不斷抱怨安全漏洞,再加上像 L0phtCrack 這類攻擊工具的出現,微軟最

後決定使他們的系統避免傳輸較弱的 LANMAN 雜湊。這表示,供應商可以選擇從不同的

路徑著手,使終端用戶依自己的安全需求配置系統。相反地,他們似乎要陷入的犧牲者相

信,支持老系統是必要的,使用者可簡單地移植到新的產品,並允許所有系統進行折衷協

商,使系統安全等級降低。這是在一個供應商內部,從設計者和實施者觀點所看到的習得

性無助的案例。[7]

Page 12: Adobe Acrobat PDFepaper.gotop.com.tw/PDFSample/A273.pdf · 本週例行會出現的漏洞包括在Adobe Acrobat 和Adobe 閱讀器上的緩衝區溢出漏洞,一個目前眾所周知的漏洞,在你開啟攻擊者的

8  第一章

不只是微軟

為了避免讀者以為我專挑微軟毛病,我提出以下幾點持平(可能引起反感)的意見。

在這段時間內(1990 年中期到後期),微軟在市場和媒體前,擺出姿態聲稱它的系統比 Unix

更安全。網際網路上的伺服器大多使用 Unix 作業系統,而微軟正試圖闖入這個市場。眾所周

知,蔚為主流的各種 Unix 版本,已有許多安全漏洞被發現並公開在網路中。但從網際網路的

角度來看,對 Windows NT 4.0 安全性的研究並不多。那是因為 NT 4.0 系統在網路上只佔了

一小部份的比重而已。

微軟的立場,在本質上“我們是安全的,因為我們不是 Unix。 ”但直到微軟發布 Windows

Vista 作業系統,在其所提供的初期版顯示出強勁和現代的安全措施。Vista 也已經有它自己

的問題,但較少在安全方面。所以,當 NT4.0 變得新穎,微軟挑 Unix 毛病,強調其迄今所發

現的一長串安全問題。然形勢已經完全不同,換人們舉出迄今在微軟所發現一連串的安全問

題。現在,微軟提供了一個真正具強大安全組件的作業系統,那麼還有哪一家的系統可挑毛

病呢?進入蘋果系統。

蘋果電腦似乎也步入微軟後塵,採取了類似的營銷措施。儘管微軟聲稱,他們基本上是安全

的,因為他們不是 Unix。蘋果的市場和其用戶群則聲稱,其 OS X 平台基本上就更能抵抗病毒

與攻擊,因為它不是 Windows。仔細檢核 OS X 內部核心和用戶空間,我可以說,存在很多

安全漏洞(包括遠端和本地)仍有待指出並進行修補。但蘋果似乎還在蜜月期,類似微軟的

第一個 NT 產品般:蘋果是較不被關注的,因為其市佔率相對較小。無論市佔率的高低,可預

期的是,受到的攻擊只會越來越多……。

1.1.3 天真由於客戶相對人習得無助

正如我們所看到的,微軟選擇了向後相容這個不是很優的策略,可能會讓客戶在環 境、技術能力、改變意願上產生失望的看法(不管是否有正當理由)。我將現行的網路

破壞,甚至其他更嚴重的破壞歸因於下列兩者的組合:(1)供應商所產生的習得性失助 (2)用戶的憨厚。經過一個長期的審視發現,網路交換器的製造商刻意將交換器設計成

“失敗開放”而不是“失敗關閉”。交換器的功能為在資料鏈路層傳遞封包。“失敗關閉”

在此處的意思是:在不安全狀態下,設備將關閉並停止運作。這會導致資料不會在有問 [8]

Page 13: Adobe Acrobat PDFepaper.gotop.com.tw/PDFSample/A273.pdf · 本週例行會出現的漏洞包括在Adobe Acrobat 和Adobe 閱讀器上的緩衝區溢出漏洞,一個目前眾所周知的漏洞,在你開啟攻擊者的

心理安全陷阱  9

題的系統傳輸。相反地,“失敗開放”的意思是系統不再執行任何智慧型功能,如封包

過濾等,只是一味地轉發所有封包到所有的埠口註 3。

從本質上來說,一個交換器若是失效開放,那麼它就會變成一個沉默集線器。如果你在外

只想被動嗅探不屬於你的網路資料,沉默集線器正是你想要的。一個正常運轉的交換器只

會將封包傳送到適當的目的地。

許多組織認為被動網路嗅探不是一個真正的威脅,因為它們只在交換器運行。但時至今 日,在交換器構成的區域網路上安置嗅探器,探勘不屬於你的資料,已是非常普遍的事,

但這卻使該組織的網路群組感到極端驚訝。他們沒有意識到,供應商已決定,為避免連接

中斷將不惜一切代價(可能是害怕通訊被突然中斷的憤怒顧客),因此當某封包有錯誤發 生、安全攻擊、或缺乏明確指令該如何做時,交換器便會陷入混淆狀態,此時將交換器切

換到沉默廣播模式。供應商,換言之,已經悄悄地幫顧客做了最好的決定。

我認為當有狀況發生,應由客戶自己來選擇所謂好與不好的因應措施。雖然在多數的應用

中,當有狀況發生時,將交換器切換到“失敗開放”要比停止運作來的好。但有些場合,

交換器是用在阻隔某些流量,並將內部領域和系統隔離。如果是這樣的話,當有狀況發生

時,讓交換器先執行“失敗關閉”接著發出警報,這也許對客戶來說會最有利。所以,當

狀況發生時,應該提供客戶選擇“失敗開放”還是“失敗關閉”。

至此,我們討論了由供應商引發的習得性失助,和由客戶引發的天真依賴性。習得性失助

來自於供應商的懷疑,懷疑能否教育客戶,懷疑能否獲得客戶對其提供多種選擇的讚美。

這有點類似於前面討論的舊系統相容性解決方案。供應商認為,提供這種額外的配置選擇

只會令客戶混淆、使客戶自找麻煩,或只是花大筆錢讓客戶打服務電話給自己。

客戶的天真依賴特質是可以理解的:她從完善的供應商處買了耀眼具前瞻性系統,此刻 起,似乎一切都運行良好。但這種天真依賴的合理性並不在降低其實用性以致不堪使用。

難道必須降低系統的安全性,以使系統能在任何環境運轉嗎?難道協定一定要盲目

故意地讓舊版本在衰弱的安全等級的環境中互相作用嗎?如果系統變得混亂,它會回復成

一個愚蠢的舊設備嗎?這些情況往往可以追溯到習得性失助。[9]

註 3 這和電路用詞相反,失敗時關閉(閉路)表示讓電流通過,失敗時打開(開路)表示切斷電流。

Page 14: Adobe Acrobat PDFepaper.gotop.com.tw/PDFSample/A273.pdf · 本週例行會出現的漏洞包括在Adobe Acrobat 和Adobe 閱讀器上的緩衝區溢出漏洞,一個目前眾所周知的漏洞,在你開啟攻擊者的

10  第一章

1.2 確認陷阱

Hobbit(一位朋友也是位非凡駭客註 4)在八月的某一天和我吃晚飯(回溯 1997),席間還 有來自微軟的經理和高階工程師註 5。他們想知道為什麼我們那麼快就能在微軟的產品裡找

到這麼多的漏洞。沒記錯的話,我當時答覆是:我們將隨機垃圾輸入到系統當中。這是一

個簡單的錯誤和安全測試技術,有時也被稱為“模糊”(fuzzing),現在已經被記錄在主要

的計算機科學的刊物中。然而,當時模糊並沒有廣泛地在“駭客”社群中推廣。

我們告訴工程師,我們對於微軟系統遭遇模糊輸入時有很大比例會因此停擺而感到非常驚

訝。接著我們問對方是否有執行一些系統強韌性測試,適當的 QA(Quality Assueance:品質保證)測試將包括錯誤的輸入,且應該已經確認了許多我們發現在系統和應用程式的

漏洞。

工程師的答覆是,他們已對所有產品進行詳盡的可用性測試,但是這並不包括嘗試破壞產

品。這個回覆說明了問題所在。儘管微軟努力確保良好的用戶體驗,但他們並沒有考慮到

攻擊者或環境。

舉個例子,微軟 Word 的開發團隊,以所支援的輸入格式(Word、Word Perfect、RTF、純

文字等)測試他們的文件解析器。他們並未測試預期格式的變種,這些變種文件只可以手

動建立,但絕不能由一個正規相容的文字處理器產出。惡意攻擊者會利用這些畸形變種格

式來測試系統,這些畸形變種文件可歸類為準隨機垃圾。

我們在晚宴上問微軟高階代表,為什麼他們沒有發送惡意資料?或者輸入格式不正確的文

件以測試他們的產品?得到的答覆是“為什麼用戶想要那麼做?”他們的臉孔看起來既震

驚又沮喪,怎麼會有人用故意讓系統當掉的方式來測試系統。

註 4 Hacker(駭客),表示其受到信任,大部分的意義是正面的。註 5 針對某一協定的關鍵技術,取得授權所費昂貴,乾脆聘請專家重新發明這個協定還比較便宜。在晚宴

上的工程師,是目前微軟負責將 DCE/RPC 重建至 SMB/CIFS 的工程師之一。

Page 15: Adobe Acrobat PDFepaper.gotop.com.tw/PDFSample/A273.pdf · 本週例行會出現的漏洞包括在Adobe Acrobat 和Adobe 閱讀器上的緩衝區溢出漏洞,一個目前眾所周知的漏洞,在你開啟攻擊者的

心理安全陷阱  11

他們從來沒有考慮過他們的應用程式將被部署在一個敵對的環境。而這種仁慈的觀點,可

由另一個惡意攻擊者利用的心理特徵所激發:確信陷阱。

1.2.1 觀念介紹

微軟測試產品的目的,是要證實自己關於這些軟體是如何運轉的看法,而不是駁斥自己的

設計理念。軟體設計經常為這個盲點所害。Peter Wason 在 1968 年的論文指出,“要獲得

正確的解決方案就必須願意嘗試偽造假設,並對我們經常感到正確的直觀進行測試”註 6。 他以一個簡單的智力測驗說明確信陷阱。[10]

找一些人並告知他們,你在進行一個小實驗,且會提供受測者一個符合某規則的整數清單,

供他猜測。他們則根據這些資料找出規則,接著根據觀察與判斷列出一些資料,你會告訴

他們,有哪些點符合規則。當受測者認為自己知道規則,即可將其提出。

實際上,規則是簡單的任何三個遞增的數字,但你不會告訴受測者最初你所提供的

數字是 2、4 和 6。此時,一個受測者可能提供的數字是 8、10 和 12,你應該告訴他 8、 10、12 確實符合規則。而另一位受測者也可能會建議 1、3、5。同樣的,你也會確認該序

列 1、3、5 是否有符合規則。

人們看到最初的一系列數字 2、4 和 6,會注意一個明顯的關係:即每個數字遞增 2 後,

構成下一個數字。他們在心裡自動歸納出這個原則,而沒有依你訂的規則提供數字,當得

知這些序列是正確的,則更加堅定確認之前在腦海中浮現的規則是正確的,不會去推翻它。

試想一下,一個套用在軟體的秘密規則,此秘密規則接受輸入,如果剛才在你實驗中的受

測者,也是軟體測試員,便會相信所有的用戶將輸入遞增 2 的序列。他們不會測試其他序

列,如 1、14 和 9087(更不用提 -55、-30、0)。最後系統幾乎肯定會接受未經檢驗的輸入,

只有使系統當機。

註 6 “Reasoning About a Rule," Peter Wason, The Quarterly Journal of Experimental Psychology, Vol. 20, No. 3. 1968。

Page 16: Adobe Acrobat PDFepaper.gotop.com.tw/PDFSample/A273.pdf · 本週例行會出現的漏洞包括在Adobe Acrobat 和Adobe 閱讀器上的緩衝區溢出漏洞,一個目前眾所周知的漏洞,在你開啟攻擊者的

12  第一章

為什麼確信陷阱會發生作用呢?答案是,大家都喜歡正確,不喜歡不正確。雖然嚴格的邏

輯會要求測試我們的假設—即所有輸入必須是偶數,或者必須是遞增 2,不會提出不符合

我們的假設的序列如(10、9、8),那是人的本能,嘗試加強我們認可的,而不是與之相 抵觸。

“一個軟體有照你預想的方式運行嗎?”你不該只用自己預想的方式去做測試,還可以透

過異於尋常、惡意和隨機使用的方式。但內部軟體測試則很少營造軟體會面對的真實情境

和輸入,而這些真實情境可藉由正常的終端用戶和具敵意的用戶來營造。[11]

1.2.2 分析師的確信陷阱

假想一位在情資機構(three-letter agency,如 CIA、FBI、NRO、NSA 等)工作的情報分析 師。分析師要建立有效和有用的報告,以作為職等晉級的依據。她可以從多個來源挑選情

報,包括之前在她這個職務工作人員經手的分析報告,進而提出這些報告給她的上司。雖

然這看似簡單,卻要承擔一個潛在的確信陷阱。在她的上司任此職務進行審查前,很有可

能上司是前任分析師,並且建立了一些報告,而現任分析師用此報告作為資料背景。換句

話說,據以做決策的資料是由審核人員自己輸入的,球員兼裁判,這類情況並不少見。

很明顯的,分析師有一個傾向,盡量將報告做的和老闆一致,而不是試圖提出不同意 見。她可能陷入了一種刻意自覺情境,尤其是當她想在服務單位獲得職務升等的時候,或

像 Wason 的 3 個遞增數字的例子,不自覺的就這麼做。至少這機構的結構和訊息基礎,

創建了一個潛在強大的一種自我強化的反饋循環。

我親眼目睹了這兩個案例,其中人們開始認識到確信陷阱,他們努力工作以確保不會陷

入確信陷阱,其實這種堅持也是一種確信陷阱的陷入。毫不奇怪,這兩個案例涉及的人,

和在情報分析場景引起我注意的是同一種人,他們都使我深信,原來在情資報告這個環 境,陷入確信陷阱的錯誤竟然是那麼頻繁的在發生!

1.2.3 陳舊的威脅模型

在前任總統任職期間,我在執行辦公室擔任一組重要人員的顧問。我的任務之一就是當有

關人員收到電腦相關網路功能的報告(包括進攻和防禦)時,適時表達我的意見,並指出

當中有哪些研究領域是有效或有價值的。我經常要指出的是,報告當中在對敵方和技術面

的建模部分有著令人遺憾的不正確性。這些即將被使用的技術、策略和功能根本無法和那