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