威脅建模的主流框架、工具與優(yōu)秀實踐
了解威脅建模框架、方法和工具可以幫你更好地識別、量化和排序面臨的威脅。
威脅建模是一個結(jié)構(gòu)化的過程,IT專業(yè)人員可以通過該過程識別潛在的安全威脅和漏洞,量化每個威脅的嚴(yán)重性,并確定技術(shù)的優(yōu)先級以緩解攻擊并保護IT資產(chǎn)。
這個寬泛的定義聽起來可能像是網(wǎng)絡(luò)安全專業(yè)人員的職位描述,但是威脅模型的重要之處在于它是系統(tǒng)的和結(jié)構(gòu)化的。威脅建模人員將執(zhí)行一系列具體步驟,以全面了解他們試圖保護的IT環(huán)境,識別漏洞和潛在攻擊者。
總的來說,威脅建模在某種程度上仍然是科學(xué)和藝術(shù)的綜合體,并沒有單一的威脅建模過程規(guī)范。威脅建模的實踐借鑒了各種早期的安全實踐,最著名的是1990年代開發(fā)的“攻擊樹”的概念。1999年,Microsoft員工Loren Kohnfelder和Praerit Garg在公司內(nèi)部分發(fā)了一份名為“我們產(chǎn)品的威脅”的文件¹,該文件被許多人認(rèn)為是威脅建模的第一個明確描述。
Kohnfelder和Garg將他們的建議稱為“STRIDE框架”,我們將在本文后面詳細討論它的細節(jié)。如今我們已經(jīng)擁有各種各樣的威脅建??蚣芎头椒?,這些模型側(cè)重點不同,其中一些模型針對特定安全技術(shù)領(lǐng)域,例如,應(yīng)用程序安全。在本文中,我們將幫助您了解所有這些方法的共同點,以及哪種特定的技術(shù)可能適合您。
威脅建模流程和步驟
每種的威脅建模方法都包含一系列步驟,我們將在本文后面的部分中討論每個步驟的細微差別。首先,我們將看一下所有這些方法共有的基本邏輯流程。對威脅建模過程最簡潔明了的概述之一來自軟件工程師Goran Aviani,他指出威脅模型的目的是回答四個問題:
- 我們面對的是什么?
- 可能會有哪些問題(威脅)?
- 我們該怎么做?
- 我們做得好嗎?
反過來,威脅建模過程應(yīng)包括四個主要步驟,每個步驟都會為這些問題之一提供答案。
- 分解應(yīng)用程序或基礎(chǔ)架構(gòu)
- 確定威脅
- 確定對策和緩解措施
- 排序威脅
為了準(zhǔn)確了解這些步驟中的每個步驟,我們需要討論構(gòu)成威脅建模基礎(chǔ)的特定技術(shù)。
威脅建模技術(shù)
上面列出的步驟中,最陌生的術(shù)語可能是分解(Decompose)。分解應(yīng)用程序或基礎(chǔ)架構(gòu)意味著什么?軟件工程師Andrea Della Corte認(rèn)為,廣義上講,分解應(yīng)用程序包括“了解應(yīng)用程序及其與外部實體的交互方式。這涉及創(chuàng)建用例,以了解應(yīng)用程序的使用方式,確定入口點以查看潛在的攻擊者可以在哪里與應(yīng)用程序進行交互,確定資產(chǎn)(即攻擊者可能會感興趣的項目/區(qū)域),并標(biāo)識表示應(yīng)用程序?qū)⑹谟柰獠繉嶓w的訪問權(quán)限的信任級別。”(他在這里專門談?wù)搼?yīng)用程序安全性,但是顯然,從廣義上講,這也適用于對基礎(chǔ)結(jié)構(gòu)的看法。)
分解應(yīng)用程序的一種技術(shù)是構(gòu)建數(shù)據(jù)流程圖。這是1970年代開發(fā)的一種方法,以可視方式展示數(shù)據(jù)如何在應(yīng)用程序或系統(tǒng)中移動,以及各個組件在何處更改或存儲數(shù)據(jù)。其中信任邊界是在2000年代初期添加進來的概念,特指數(shù)據(jù)流中的卡點,在該點上需要對數(shù)據(jù)進行驗證,然后數(shù)據(jù)才能被接收該數(shù)據(jù)的實體使用。信任邊界是用數(shù)據(jù)流程圖進行威脅建模的關(guān)鍵。
在線銀行應(yīng)用的數(shù)據(jù)流程圖示例
下圖是在線銀行應(yīng)用程序的數(shù)據(jù)流程圖;虛線表示信任邊界,數(shù)據(jù)可能會在信任邊界被更改,因此需要采取安全措施。
網(wǎng)上銀行應(yīng)用程序的數(shù)據(jù)流程圖(作者為Wei Zhang和Marco Morana,以O(shè)WASP許可分發(fā))
更深入的數(shù)據(jù)流程圖威脅建模方法可以參考微軟的這個文檔²。
由于數(shù)據(jù)流程圖是由系統(tǒng)工程師而不是安全專家開發(fā)的,因此它們包含了許多威脅建模不需要的開銷。數(shù)據(jù)流程圖的一種替代方法是過程流程圖。兩者在總體概念上相似,但后者更加精簡,并且側(cè)重于用戶和執(zhí)行代碼在系統(tǒng)中的移動方式,更緊密地反映了攻擊者的思維方式(例如下圖)。
繪制攻擊樹也是一種威脅建模技術(shù),當(dāng)您確定要對應(yīng)用程序或基礎(chǔ)結(jié)構(gòu)潛在威脅的階段時,它就變得非常重要。攻擊樹由90年代后期的信息安全傳奇人物布魯斯·施耐爾(Bruce Schneier)開創(chuàng)。它們由代表不同事件的一系列父節(jié)點和子節(jié)點組成,子節(jié)點是必須滿足的條件才能使父節(jié)點為真。根節(jié)點(圖中的最高父節(jié)點)是攻擊的總體目標(biāo)。借助攻擊樹,威脅建模者可以看到必須組合哪些情況才能使威脅成功。下圖顯示了一個簡單的銀行應(yīng)用攻擊樹,說明了病毒可能成功感染文件的不同方式。
下圖是Hackinthebox從攻擊者的角度構(gòu)建的攻擊樹示例,可以幫助您了解自己所面臨的威脅。
威脅建模框架和方法
威脅建模的各種結(jié)構(gòu)化方法通常稱為框架或方法論(本文中這兩個術(shù)語基本上可以互換使用)。目前的威脅建??蚣芎头椒ㄓ泻芏啵覀兲魩讉€最流行的介紹如下:
1. 7種頂級威脅建模方法
- STRIDE
- DREAD
- PASTA
- VAST
- Trike
- OCTAVE
- NIST
2. STRIDE威脅建模
如上所述,STRIDE是威脅建模的祖父,最早于90年代末在Microsoft開發(fā)。STRIDE代表六種威脅,每種都對CIA三要素構(gòu)成威脅,具體如下:
- 欺騙或冒充他人或計算機,影響真實性
- 篡改數(shù)據(jù),這會破壞完整性
- 抵賴,或無法將執(zhí)行的操作關(guān)聯(lián)到操作者,這違反了不可抵賴性
- 信息泄露,違反機密性
- 拒絕服務(wù),這違反了可用性
- 特權(quán)提升,違反授權(quán)
3. DREAD威脅建模
DREAD被認(rèn)為是STRIDE模型的一個附加組件,該模型使建模人員可以在確定威脅后對其進行排名。對于每個潛在威脅,DREAD代表六個問題:
- 潛在損害:如果利用漏洞,造成的損害有多大?
- 重現(xiàn)性:重現(xiàn)攻擊有多容易?
- 可利用性:發(fā)動攻擊有多容易?
- 受影響的用戶:大概影響了多少用戶?
- 可發(fā)現(xiàn)性:查找漏洞有多容易?
這些問題中的每一個都得到1-3分的評分。
4. PASTA威脅建模
PASTA代表攻擊模擬和威脅分析過程,它是一個七步驟過程,致力于使技術(shù)安全要求與業(yè)務(wù)目標(biāo)保持一致。每個步驟都非常復(fù)雜,由幾個子步驟組成,但是總體順序如下:
- 定義目標(biāo)
- 定義技術(shù)范圍
- 應(yīng)用程序分解
- 威脅分析
- 漏洞和弱點分析
- 攻擊建模
- 風(fēng)險與影響分析
5. VAST威脅建模
VAST代表可視化,敏捷威脅建模。該模型是 ThreatModeler(自動威脅建模平臺)的基礎(chǔ),該平臺可以區(qū)分應(yīng)用程序和運營威脅模型。VAST專為集成到圍繞devops構(gòu)建的工作流中而設(shè)計。
6. Trike威脅建模
Trike是用于威脅建模和風(fēng)險評估的框架的開源工具,它基于防御的角度,而不是試圖模仿攻擊者的思維過程。使用Trike,您可以為要防御的系統(tǒng)建模,并通過CRUD的角度評估每個組件,也就是說,誰可以創(chuàng)建,讀取,更新或刪除該實體。通過遍歷數(shù)據(jù)流程圖來識別威脅,每種威脅僅分為兩類:拒絕服務(wù)或特權(quán)提升。
7. OCTAVE威脅建模
OCTAVE代表“運營關(guān)鍵威脅,資產(chǎn)和脆弱性評估”,是卡耐基梅隆大學(xué)開發(fā)的一種威脅建模方法,其重點是組織風(fēng)險而不是技術(shù)風(fēng)險。它包括三個階段:
- 建立基于資產(chǎn)的威脅配置文件
- 識別基礎(chǔ)架構(gòu)漏洞
- 制定安全策略和計劃
8. NIST威脅建模
美國國家標(biāo)準(zhǔn)技術(shù)研究院擁有自己的以數(shù)據(jù)為中心的威脅建模方法,該方法包括四個步驟:
- 系統(tǒng)和數(shù)據(jù)識別和表征
- 識別并選擇要包含在模型中的攻擊媒介
- 表征緩解攻擊媒介的安全控件
- 分析威脅模型
該NIST草案還包括一個方法的具體應(yīng)用實例。如果您正在尋找威脅建模示例,那么這是一個很棒的文檔,可以閱讀該文檔以了解流程如何工作。
威脅建模優(yōu)秀實踐
無論選擇哪種框架,都應(yīng)遵循一些實踐方法。但最重要的(通常也是很難做到的)是將威脅建模作為系統(tǒng)開發(fā)過程中的優(yōu)先事項。如果能在項目開發(fā)伊始就做到這一點,以后可以省去很多麻煩,因為安全性可以被深深“植入”到應(yīng)用程序或系統(tǒng)中。
另一個最佳實踐是不要將應(yīng)用程序和系統(tǒng)彼此隔離。Michael Santarcangelo寫道:“如果各種威脅模型以相同的方式相互連接,并且應(yīng)用程序和組件作為IT系統(tǒng)的一部分進行交互,那么結(jié)果將是一個全面的攻擊面,CISO可以使用該攻擊面來理解整個企業(yè)的整體威脅組合。”
我們還敦促您避免常見的威脅建模錯誤。簡而言之:不要過于關(guān)注頭條新聞上的威脅;不要忘記您的用戶可能是所有人中最大的無意威脅;不要忘記威脅模型應(yīng)該是“活著”的文檔,并且需要不斷更新。
威脅建模工具
需要指出的是,上面列出的兩種方法(VAST和Trike)實際上是圍繞特定的軟件工具構(gòu)建的。還有一些支持其他方法的工具,例如,Microsoft提供了免費的威脅建模工具,而OWASP Foundation也推出了自己的桌面和web版本的威脅建模工具——Threat Dragon³。
實際上,這里描述的許多方法都是概念性的,并未與任何軟件聯(lián)系在一起。攻擊樹或數(shù)據(jù)流程圖可以用筆和紙繪制。正如Luca Bongiorni的演講所解釋的那樣,用于威脅建模的一些最受歡迎的工具是Microsoft Visio和Excel。開始為基礎(chǔ)架構(gòu)進行威脅建模的門檻很低,但回報卻很高。
參考資料:
- 最早的威脅建模論文:https://www.microsoft.com/security/blog/2009/08/27/the-threats-to-our-products/
- 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
- OWASP威脅建模工具Threat Dragon:https://owasp.org/www-project-threat-dragon/
【本文是51CTO專欄作者“安全牛”的原創(chuàng)文章,轉(zhuǎn)載請通過安全牛(微信公眾號id:gooann-sectv)獲取授權(quán)】