目前,軟件開發(fā)人員在兼顧軟件性能、功能、易用性、架構(gòu)和可觀測性等的同時,還需要重點關(guān)注系統(tǒng)應(yīng)用的安全問題。面對復(fù)雜的工作需要,軟件專業(yè)人員可以采取工具進(jìn)行協(xié)助,而威脅建模正是確保系統(tǒng)應(yīng)用安全的工具之一。本文將主要對威脅建模的定義、價值以及威脅建模的應(yīng)用等進(jìn)行詳細(xì)介紹。
威脅建模的定義
威脅建模是識別并評估如何管理系統(tǒng)中的安全弱點的過程。安全弱點好比一場戰(zhàn)斗,威脅建模能夠幫助開發(fā)人員知道敵人可能在哪里發(fā)動攻擊,將會受到多大的傷亡,從而幫助企業(yè)建立有效的防御體系。
威脅建模的應(yīng)用價值主要包括:
更清楚地了解安全需求
威脅建模將幫助企業(yè)明確精力應(yīng)該優(yōu)先投入在哪里、應(yīng)該優(yōu)先考慮哪些方面等。
反饋更快速、修復(fù)更省錢
威脅建??梢詭椭髽I(yè)盡早發(fā)現(xiàn)設(shè)計過程中的問題,在漏洞出現(xiàn)之前消除,這意味著不會失去客戶的信任。
增加信心
恐懼未知會導(dǎo)致非理性的危險行為。整體安全常常給人以迷宮的感覺,但威脅建??梢詭椭髽I(yè)可以走出迷宮,讓企業(yè)有信心迅速采取行動,推進(jìn)創(chuàng)新的計劃。
改進(jìn)產(chǎn)品質(zhì)量
安全歷來是一種看不見的特性,很難量化。當(dāng)開發(fā)人員急于向客戶交付產(chǎn)品時,常常將安全拋在設(shè)計的后面。最近的許多數(shù)據(jù)泄露事件就是佐證。威脅建模讓安全可以量化,被賦予相應(yīng)的優(yōu)先級。
威脅建模的類型與方法
以資產(chǎn)為中心的威脅模型,側(cè)重于系統(tǒng)的不同部分或資產(chǎn)(通常是攻擊面或信任邊界)。然后分析資產(chǎn)可能面臨的各種潛在攻擊途徑。
以攻擊者為中心的威脅模型,讓組織洞察威脅/攻擊者的思維模式。他們在找什么?他們?nèi)绾卧谙到y(tǒng)中找到信息并利用它?然后組織把這些想法與可能有關(guān)的攻擊面聯(lián)系起來。
以軟件為中心的威脅模型,使用設(shè)計和圖表來直觀呈現(xiàn)威脅和攻擊面。這是主流的威脅建模方法,可以更全面、更清晰地洞察漏洞。
威脅建模有許多方法,但在團(tuán)隊選擇一種或多種方法之前,有必要從更簡單的方面入手,重點考慮關(guān)鍵問題:
1. 我們在開發(fā)什么?
先要了解我們在開發(fā)什么:新軟件、物聯(lián)網(wǎng)生態(tài)系統(tǒng)還是功能?為此創(chuàng)建數(shù)據(jù)流程圖也很有用,然后我們可以標(biāo)注系統(tǒng)的信任邊界。
2. 會出現(xiàn)什么問題?
針對數(shù)據(jù)流圖中的每個要素或聯(lián)系列出潛在的威脅。在這一步還可以充分利用安全卡、STRIDE或殺傷鏈等方法。
3. 應(yīng)該如何做?
根據(jù)系統(tǒng)的當(dāng)前狀態(tài)和潛在威脅,開始跟蹤漏洞,并確定優(yōu)先級。具體表現(xiàn)為需求中的惡意用戶故事或測試用例。制定管理這些漏洞的措施:
緩解:使系統(tǒng)更難被利用,比如默認(rèn)要求身份驗證才可訪問應(yīng)用程序。
消除:盡量減少功能,以縮小應(yīng)用程序的攻擊面。
轉(zhuǎn)移:轉(zhuǎn)移處理風(fēng)險的責(zé)任。比如,利用API管理器來處理身份驗證。
接受:緩解、消除或轉(zhuǎn)移風(fēng)險可能成本過高;接受風(fēng)險是最后的手段。我們?nèi)孕枰獙⒋擞涗浵聛?,以便所有人意識到剩余風(fēng)險。
確保上面的第1步到第3步足夠具體、可操作,以便將來針對發(fā)現(xiàn)的新威脅作修訂調(diào)整。這好比敏捷方法中的回顧。數(shù)據(jù)流程圖是活文檔,我們可以定期更新、管理控制版本。
威脅建模的常見模型
安全卡
安全卡方法不是很全面,但可以對開發(fā)的系統(tǒng)和威脅的具體例子提出探索性問題。該方法由華盛頓大學(xué)的Tamara Denning、Batya Friedman和Tadayoshi Kohno于2013年開發(fā),包括四個維度的探索性問題:
對手的動機(jī)
對手的資源
對手的方法
人員的影響
STRIDE模型
微軟的Praerit Garg和Loren Kohnfelder開發(fā)了STRIDE,這種方法列出了系統(tǒng)威脅的一般類別:
欺騙:我們?nèi)绾未_保用戶的真實性?
篡改:我們?nèi)绾魏瞬閿?shù)據(jù)的完整性?
拒絕:我們?nèi)绾螌徲嬒到y(tǒng)中的操作,驗證某人有沒有企圖做某事?
信息泄露:我們?nèi)绾伪苊鈾C(jī)密信息被不應(yīng)該看到的人看到?
拒絕服務(wù):我們?nèi)绾畏乐官Y源被惡意耗盡?
權(quán)限提升:我們?nèi)绾巫柚鼓橙双@得不應(yīng)該被授權(quán)獲得的額外權(quán)限?
DREAD
DREAD用于量化威脅帶來的風(fēng)險,每個字母代表計算風(fēng)險時考慮的因素。DREAD風(fēng)險=損害+可重現(xiàn)性+可利用性+受影響用戶+可發(fā)現(xiàn)性。DREAD在確定威脅優(yōu)先級方面非常有用。如果企業(yè)面臨眾多威脅,又不清楚當(dāng)前面臨的風(fēng)險,DREAD是明智的選擇。
PASTA
PASTA代表“攻擊模擬和威脅分析流程”。它是2012年開發(fā)的一種以風(fēng)險為中心的威脅建模方法。PASTA包括以下步驟:
1. 定義業(yè)務(wù)目標(biāo):目前的里程碑或產(chǎn)品目標(biāo)是什么?
2. 定義技術(shù)范圍:這些目標(biāo)的故事圖或書面功能需求是什么?
3. 分解應(yīng)用程序:如果需要,將應(yīng)用程序的架構(gòu)分解為可部署的構(gòu)件、基礎(chǔ)架構(gòu),甚至更小的組件。
4. 威脅分析:查看信任邊界和攻擊面;可能會有哪些潛在的攻擊?
5. 弱點和漏洞分析:查看當(dāng)前狀態(tài),看看已分析的威脅在哪個環(huán)節(jié)可能缺少防御。
6. 攻擊枚舉和建模:模擬潛在的攻擊途徑??纯唇Y(jié)果會怎樣。
7. 風(fēng)險和影響分析:找出每個漏洞面臨的風(fēng)險,優(yōu)先處理高風(fēng)險漏洞。
如果企業(yè)有不確定的潛在風(fēng)險時,PASTA是一種全面的建模方法,非常有用。IT人員可以幫助描述組織安全的整體狀況,并將安全列為設(shè)計的核心。
殺傷鏈
殺傷鏈?zhǔn)且环N軍事技術(shù),由洛克希德?馬丁公司稍加改動用于網(wǎng)絡(luò)安全。它描述了整條攻擊鏈:偵察、武器化、投放、利用、安裝、指揮和控制以及對目標(biāo)實施的行動。它還描述了殺傷鏈每個階段可能出現(xiàn)的步驟:檢測、拒絕、破壞、降級、欺騙和遏制。
殺傷鏈可以清楚地回答“會出什么問題?”和“我們該怎么做?”這類問題。一旦組織確定了特定的威脅、攻擊面或信任邊界,就可以對殺傷鏈和防御進(jìn)行建模。
MITRE ATT&CK
MITRE ATT&CK圍繞收錄已知威脅和歷史攻擊的資料庫,組織可以將其應(yīng)用于目前的系統(tǒng)中。沒有什么比實際經(jīng)歷更能幫助防御了。在這種模式下,我們可以汲取以往教訓(xùn),防止未來出現(xiàn)類似的安全問題。
更多信息可以來這里獲取==>>電子技術(shù)應(yīng)用-AET<<