威脅建?!獓@假想敵的領(lǐng)域建模

威脅建模是一個幫助識別列舉潛在威脅,并確定緩解措施的優(yōu)先級,讓安全實踐左移的過程方法(例如架構(gòu)缺陷漏洞或缺乏適當?shù)谋Wo措施)。

威脅建模的目的是為防御者提供系統(tǒng)分析,分析需要包含哪些控制或防御措施,考慮到系統(tǒng)的性質(zhì)、可能的攻擊者的概況、最可能的攻擊向量以及攻擊者最需要的資產(chǎn)。威脅建??梢曰卮鹬T如“我在哪里最容易受到攻擊?”、“什么是最相關(guān)的威脅?”以及“我需要做什么來防范這些威脅?”等問題。

簡而言之,威脅建模是一個圍繞假想敵開展的領(lǐng)域建?;顒?。

能力要求 —— 資深架構(gòu)師的小眾發(fā)展路徑

“這個崗位好難招啊,我們招了一年都沒招到特別匹配的” —— 某客戶安全實驗室威脅建模負責人

威脅建模并不是一個特別新的概念,但是在中國的信息安全行業(yè),如果10個候選人里面能遇到1個簡歷里寫著威脅建模經(jīng)驗,運氣就已經(jīng)很不錯了,并且,實際上可以勝任這個崗位的角色更為稀缺。大部分的威脅建模能力都留在了各大高校機構(gòu)實驗室從事研究員的角色,沒有廣泛的技術(shù)經(jīng)驗在企業(yè)中鋪開,并且這個崗位也還很少在產(chǎn)品和IT部門出現(xiàn)。

為什么這么難?主要的原因是,威脅建模并不是一個傳統(tǒng)安全測試崗位可以很容易發(fā)展出的能力。

一個優(yōu)秀的安全測試人員,需要了解各種類型的漏洞和攻擊原理,需要思考每個攻擊路徑之間的聯(lián)系,需要能閱讀源碼或二進制反匯編的代碼尋找漏洞的蛛絲馬跡,需要操作自動化工具進行暴力搜索,甚至需要熟練地逆向分析軟件的原理,但是卻往往缺乏正向開發(fā)和架構(gòu)師的背景,尤其是在安全領(lǐng)域浸淫多年的大牛,很多都缺乏對最新技術(shù)架構(gòu)的跟進和實踐經(jīng)驗。

一個僅僅在安全測試方面有所建樹的專家,卻很難與大部分軟件開發(fā)人員建立對話,而威脅建模,本質(zhì)上是一個與架構(gòu)師對話的過程,對話需要足夠的共同語言和互相理解,因此也就對安全測試提出了新的要求,“與架構(gòu)師統(tǒng)一語言”的要求。

整個過程中,威脅建模專家應當扮演假想敵的角色,與架構(gòu)師進行思維上的碰撞,從而闡明和解釋威脅的來源與可能存在的影響。

因此,對威脅建模人員的要求,既需要他能積累大量安全漏洞風險相關(guān)的知識,也需要了解大量軟件架構(gòu)設(shè)計和技術(shù)原理,甚至需要對開發(fā)非常熟悉,這也導致一個很有意思的現(xiàn)象,威脅建模人員大部分是由開發(fā)者發(fā)展而來,而非業(yè)務分析師或安全測試人員。

方法論 —— 加入安全視角的架構(gòu)建模過程

在人員稀缺的情況下,為了讓更多的企業(yè)能更容易開展威脅建模活動,于是出現(xiàn)了非常多的威脅建?!胺椒ㄕ摗保渲幸訢FD模型最為突出,它嘗試將軟件架構(gòu)抽象為一系列的組件數(shù)據(jù)交互,并指出系統(tǒng)中的安全要素(角色、組件、資產(chǎn)數(shù)據(jù)、交互關(guān)系、邊界)。

通常一場威脅建模工作坊中,主持人會從以下幾個步驟展開話題:

  1. 我們有哪些系統(tǒng),這些系統(tǒng)有哪些用戶?
  2. 我們從每一個業(yè)務事件流的角度出發(fā),這個用戶和系統(tǒng)的交互有哪些?
  3. 我們在交互中,產(chǎn)生了哪些數(shù)據(jù)實體?有哪些屬于我們關(guān)心的核心資產(chǎn)?
  4. 我們有哪些外部的系統(tǒng)或者依賴(我們難以控制的威脅引入)
  5. 我們有哪些系統(tǒng)安全邊界設(shè)計,如網(wǎng)絡(luò)隔離、認證和鑒權(quán)等(我們已經(jīng)考慮并實施的安全控制)

可以看到,這個建模過程的前三步,非常類似“事件風暴”方法中的業(yè)務事件、用戶事件流轉(zhuǎn)、交互命令識別、領(lǐng)域聚合。而其他的幾個步驟則體現(xiàn)出安全方面的考慮:需要保護的核心資產(chǎn)、威脅攻擊面、供應鏈風險、安全邊界等等。

因為需要產(chǎn)品架構(gòu)師與安全專家等多方的輸入,建議在工作坊中使用交互式繪圖工具(如beeart)繪制DFD模型架構(gòu)圖。

最后產(chǎn)出的一個DFD圖可能如下:

DFD(數(shù)據(jù)流圖)

然而,單純地使用威脅建模表達系統(tǒng)的組成結(jié)構(gòu),并沒有辦法得到足夠的信息以產(chǎn)出對于假想敵的分析,這時候就需要用到“安全專業(yè)性”來對系統(tǒng)的每個環(huán)節(jié)進行打擊了。

威脅助記詞和情報知識庫 —— 劃分子域,并進行威脅頭腦風暴

有了基本的框架,如何識別漏洞?如果我們用DDD的思維方式類比,首先需要開始劃分子域的過程,然后再進行威脅的頭腦風暴。

我們都知道劃分子域是一個非常挑戰(zhàn)劃分者經(jīng)驗的過程,所幸的是,早已有存在大量的實踐歸納出了多種解決方法,其中最為廣泛采納的就是STRIDE模型

  • Spoofing(偽裝)
  • Tampering(篡改)
  • Repudiation(抵賴)
  • Information Disclosure(信息泄露)
  • Denial of Service(拒絕服務)
  • Elevation of Privilege(提權(quán))

很多威脅建模初學者會使用STRIDE模型來進行系統(tǒng)架構(gòu)的威脅建模,試圖對局部信息進行一次威脅分析,這其實是一種誤區(qū)。STRIDE實際上是對大量威脅種類的一種歸納,這種歸納匯總成助記詞,不應該建立某個框架或者局部領(lǐng)域可能存在特定風險的假設(shè),而應該實際地對每個已知的信息資產(chǎn)盡可能地進行遍歷,即“我們應該針對每個點和連線都進行STRIDE分析,而非針對某個點進行某個方面的分析”。

例如針對系統(tǒng)中的”認證服務“,我們常常下意識地認為”偽裝“和”提權(quán)“是它的主要威脅,但是實際上”拒絕服務“、”信息泄露“、”抵賴“乃至”篡改“都會嚴重影響到認證服務的安全性,例如當認證服務遭遇DDoS攻擊時,我們是否有預留足夠的緩存或重定向流量防止系統(tǒng)性風險,是否可能因為不恰當?shù)恼埱蠓祷匦孤队脩舻脑谠撜军c的注冊狀態(tài)。

在思考解決方向時,則可以考慮不同訴求源語背后的威脅消解方式。它有助于我們用問題驅(qū)動的方式來解決這些具體威脅,而非僅僅依賴工具或技術(shù)手段的引入。

Threat Desired property
Spoofing Authenticity
Tampering Integrity
Repudiation Non-repudiability
Information disclosure Confidentiality
Denial of Service Availability
Elevation of Privilege Authorization

威脅和與之對應的安全特性

此外,為了擴充安全方面的經(jīng)驗,社區(qū)維護的CAPEC、CWE、CVE等威脅分類和情報來源,都可以幫助我們?nèi)ダ斫庖粋€系統(tǒng)的威脅來自于哪里。一些常見的威脅(攻擊向量)就像領(lǐng)域建模里最細粒度的組件一樣,共同組成了假想敵的攻擊樹。

一棵由Monitoring service注入漏洞威脅出發(fā)的假想敵攻擊樹

此外”業(yè)務威脅“也常常是威脅建模過程中最有優(yōu)勢價值的環(huán)節(jié)之一,因為威脅建模工作坊的抽象粒度較高,可以引入”業(yè)務領(lǐng)域?qū)<摇暗膮⑴c,因此從業(yè)務視角構(gòu)建“假想敵”在威脅建模工作坊中,是一個非常適合的實踐。

通過威脅建模,我們可以獲得一個相對全面且完善的產(chǎn)品威脅列表,并以此作為基石進行架構(gòu)設(shè)計上的迭代,減少未來架構(gòu)設(shè)計變化時,引入未知風險的盲區(qū)。

因此,相應地,威脅建模也是一個長期且需要堅持的過程,威脅建模本身所需時間并不長(通常來說,一個產(chǎn)品的威脅建?;顒哟蟾判枰?個小時),但是其產(chǎn)出的威脅需求列表,常常需要上月甚至多個迭代的補足。因此,它不應該成為產(chǎn)品上市前夕或投產(chǎn)前一刻的緊急行動,而更需要成為安全左移和產(chǎn)品常規(guī)需求分析、架構(gòu)設(shè)計、測試用例設(shè)計過程中的一部分,融合在產(chǎn)品研發(fā)團隊的日常工作內(nèi)容當中。

理想安全模型挑戰(zhàn) —— 經(jīng)驗or方法?

過去數(shù)十年,安全領(lǐng)域一直存在兩個派系,經(jīng)驗主義和方法主義,經(jīng)驗主義通常講究實踐,因此對技術(shù)細節(jié)更為關(guān)注,容易發(fā)現(xiàn)常人難以意識的問題,而另一個方法派系的專家則擅長用更全面的視角去分解安全問題。而近年來,隨著安全問題的升維,我們逐漸看到這兩種方法的專家正在相向而行。

一方面,圍繞漏洞利用經(jīng)驗,尤其是大量攻防活動中的威脅,被逐漸歸納為威脅/防御的模式庫,如ATT&CK、CAPEC、CVSS的逐年完善,已經(jīng)成為可以支撐威脅模型的數(shù)據(jù)集,在威脅建模活動中作為參考輸入。

而另一個方向上,安全方法論也開始不只局限于停留在紙面文章,我們看到越來越多的安全方法論講究與實踐結(jié)合,如DevSecOps、CARTA(自適應安全)等安全方法論,都緊貼工具輸出甚至業(yè)務上下文,而非局限于安全活動的執(zhí)行情況審計。

這些思維的碰撞與相向而行,讓我們看到更結(jié)構(gòu)化、且更可預測和衡量的整體安全規(guī)劃正逐漸顯現(xiàn)。這無疑讓需求設(shè)計階段的安全活動逐漸成為了一個更科學辯證的活動,而我們有理由相信,從假想敵視角出發(fā)的“威脅建?!闭沁@場運動中的號角。


文/Thoughtworks蔣帆
原文鏈接:https://insights.thoughtworks.cn/thread-modeling/
更多精彩洞見,請關(guān)注微信公眾號Thoughtworks洞見。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容