了解威脅建模框架、方法和工具可以幫你更好地識別、量化和排序面臨的威脅。
威脅建模是一個結構化的過程,IT專業人員可以通過該過程識別潛在的安全威脅和漏洞,量化每個威脅的嚴重性,并確定技術的優先級以緩解攻擊并保護IT資產。
這個寬泛的定義聽起來可能像是網絡安全專業人員的職位描述,但是威脅模型的重要之處在于它是系統的和結構化的。威脅建模人員將執行一系列具體步驟,以全面了解他們試圖保護的IT環境,識別漏洞和潛在攻擊者。
總的來說,威脅建模在某種程度上仍然是科學和藝術的綜合體,并沒有單一的威脅建模過程規范。威脅建模的實踐借鑒了各種早期的安全實踐,最著名的是1990年代開發的“?攻擊樹?”?的概念。1999年,Microsoft員工Loren Kohnfelder和Praerit Garg在公司內部分發了一份名為“?我們產品的威脅?”?的文件1,該文件被許多人認為是威脅建模的第一個明確描述。
Kohnfelder和Garg將他們的建議稱為“ STRIDE框架”,我們將在本文后面詳細討論它的細節。如今我們已經擁有各種各樣的威脅建模框架和方法,這些模型側重點不同,其中一些模型針對特定安全技術領域,例如,應用程序安全。在本文中,我們將幫助您了解所有這些方法的共同點,以及哪種特定的技術可能適合您。
威脅建模流程和步驟
每種的威脅建模方法都包含一系列步驟,我們將在本文后面的部分中討論每個步驟的細微差別。首先,我們將看一下所有這些方法共有的基本邏輯流程。對威脅建模過程最簡潔明了的概述之一來自軟件工程師Goran Aviani,他指出威脅模型的目的是回答四個問題:
反過來,威脅建模過程應包括四個主要步驟,每個步驟都會為這些問題之一提供答案。
為了準確了解這些步驟中的每個步驟,我們需要討論構成威脅建模基礎的特定技術。
威脅建模技術
上面列出的步驟中,最陌生的術語可能是分解(Decompose)。分解應用程序或基礎架構意味著什么?軟件工程師Andrea Della Corte認為,廣義上講,分解應用程序包括“了解應用程序及其與外部實體的交互方式。這涉及創建用例,以了解應用程序的使用方式,確定入口點以查看潛在的攻擊者可以在哪里與應用程序進行交互,確定資產(即攻擊者可能會感興趣的項目/區域),并標識表示應用程序將授予外部實體的訪問權限的信任級別。”?(他在這里專門談論應用程序安全性,但是顯然,從廣義上講,這也適用于對基礎結構的看法。)
分解應用程序的一種技術是構建數據流程圖。這是1970年代開發的一種方法,以可視方式展示數據如何在應用程序或系統中移動,以及各個組件在何處更改或存儲數據。其中信任邊界是在2000年代初期添加進來的概念,特指數據流中的卡點,在該點上需要對數據進行驗證,然后數據才能被接收該數據的實體使用。信任邊界是用數據流程圖進行威脅建模的關鍵。
在線銀行應用的數據流程圖示例
下圖是在線銀行應用程序的數據流程圖;虛線表示信任邊界,數據可能會在信任邊界被更改,因此需要采取安全措施。
網上銀行應用程序的數據流程圖(作者為Wei Zhang和Marco Morana,以OWASP許可分發)
更深入的數據流程圖威脅建模方法可以參考微軟的這個文檔2。
由于數據流程圖是由系統工程師而不是安全專家開發的,因此它們包含了許多威脅建模不需要的開銷。數據流程圖的一種替代方法是過程流程圖。兩者在總體概念上相似,但后者更加精簡,并且側重于用戶和執行代碼在系統中的移動方式,更緊密地反映了攻擊者的思維方式(例如下圖)。
繪制攻擊樹也是一種威脅建模技術,當您確定要對應用程序或基礎結構潛在威脅的階段時,它就變得非常重要。攻擊樹由90年代后期的信息安全傳奇人物布魯斯·施耐爾(Bruce Schneier)開創。它們由代表不同事件的一系列父節點和子節點組成,子節點是必須滿足的條件才能使父節點為真。根節點(圖中的最高父節點)是攻擊的總體目標。借助攻擊樹,威脅建模者可以看到必須組合哪些情況才能使威脅成功。下圖顯示了一個簡單的銀行應用攻擊樹,說明了病毒可能成功感染文件的不同方式。
下圖是Hackinthebox從攻擊者的角度構建的攻擊樹示例,可以幫助您了解自己所面臨的威脅。
確定對策和對威脅進行排序的技術因框架或方法不同而相差較大,詳細介紹如下:
威脅建模框架和方法
威脅建模的各種結構化方法通常稱為框架或方法論(本文中這兩個術語基本上可以互換使用)。目前的威脅建模框架和方法有很多,我們挑幾個最流行的介紹如下:
7種頂級威脅建模方法
STRIDE威脅建模
如上所述,STRIDE是威脅建模的祖父,最早于90年代末在Microsoft開發。STRIDE代表六種威脅,每種都對CIA三要素構成威脅,具體如下:
DREAD威脅建模
DREAD被認為是STRIDE模型的一個附加組件,該模型使建模人員可以在確定威脅后對其進行排名。對于每個潛在威脅,DREAD代表六個問題:
這些問題中的每一個都得到1-3分的評分。
PASTA威脅建模
PASTA代表攻擊模擬和威脅分析過程,它是一個七步驟過程,致力于使技術安全要求與業務目標保持一致。每個步驟都非常復雜,由幾個子步驟組成,但是總體順序如下:
VAST威脅建模
VAST代表可視化,敏捷威脅建模。該模型是?ThreatModeler(自動威脅建模平臺)的基礎,該平臺可以區分應用程序和運營威脅模型。VAST專為集成到圍繞devops構建的工作流中而設計。?
Trike威脅建模
Trike是用于威脅建模和風險評估的框架的開源工具,它基于防御的角度,而不是試圖模仿攻擊者的思維過程。使用Trike,您可以為要防御的系統建模,并通過CRUD的角度評估每個組件,也就是說,誰可以創建,讀取,更新或刪除該實體。通過遍歷數據流程圖來識別威脅,每種威脅僅分為兩類:拒絕服務或特權提升。
OCTAVE威脅建模
OCTAVE代表“運營關鍵威脅,資產和脆弱性評估”,是卡耐基梅隆大學開發的一種威脅建模方法,其重點是組織風險而不是技術風險。它包括三個階段:
NIST威脅建模
美國國家標準技術研究院擁有自己的以數據為中心的威脅建模方法,該方法包括四個步驟:
該NIST草案還包括一個方法的具體應用實例。如果您正在尋找威脅建模示例,那么這是一個很棒的文檔,可以閱讀該文檔以了解流程如何工作。
威脅建模最佳實踐
無論選擇哪種框架,都應遵循一些實踐方法。但最重要的(通常也是很難做到的)是將威脅建模作為系統開發過程中的優先事項。如果能在項目開發伊始就做到這一點,以后可以省去很多麻煩,因為安全性可以被深深“植入”到應用程序或系統中。
另一個最佳實踐是不要將應用程序和系統彼此隔離。Michael Santarcangelo寫道:?“如果各種威脅模型以相同的方式相互連接,并且應用程序和組件作為IT系統的一部分進行交互,那么結果將是一個全面的攻擊面,CISO可以使用該攻擊面來理解整個企業的整體威脅組合。”
我們還敦促您避免常見的威脅建模錯誤。簡而言之:不要過于關注頭條新聞上的威脅;不要忘記,您的用戶可能是所有人中最大的無意威脅。并且不要忘記,威脅模型應該是“活著”的文檔,并且需要不斷更新。
威脅建模工具
需要指出的是,上面列出的兩種方法(VAST和Trike)實際上是圍繞特定的軟件工具構建的。還有一些支持其他方法的工具,例如,Microsoft提供了免費的威脅建模工具,而OWASP Foundation也推出了自己的桌面和web版本的威脅建模工具——Threat Dragon3。
實際上,這里描述的許多方法都是概念性的,并未與任何軟件聯系在一起。攻擊樹或數據流程圖可以用筆和紙繪制。正如Luca Bongiorni的演講所解釋的那樣,用于威脅建模的一些最受歡迎的工具是Microsoft Visio和Excel。開始為基礎架構進行威脅建模的門檻很低,但回報卻很高。
參考資料:
【1】最早的威脅建模論文:
https://www.microsoft.com/security/blog/2009/08/27/the-threats-to-our-products/
【2】Uncover Security Design Flaws Using The STRIDE Approach:
https://docs.microsoft.com/en-us/archive/msdn-magazine/2006/november/uncover-security-design-flaws-using-the-stride-approach
【3】OWASP威脅建模工具:
Threat Dragon:https://owasp.org/www-project-threat-dragon/