? ??背景
????很多人對(duì)威脅建模這項(xiàng)活動(dòng)抱有陌生感庇麦,什么是威脅吻谋?什么是建模逝变?和安全威脅情報(bào)是不是有關(guān)巡社?和架構(gòu)安全分析(Architecture Risk Analysis)什么關(guān)系膛堤? 能否用Kill Chain替代?
????威脅建模是一種基本的安全實(shí)踐晌该。定義是通過(guò)識(shí)別系統(tǒng)和潛在威脅來(lái)優(yōu)化提升安全性肥荔,設(shè)置對(duì)策防止和減輕系統(tǒng)威脅的影響。軟件的開(kāi)發(fā)過(guò)程:面臨的內(nèi)外部場(chǎng)景不斷在變化朝群,應(yīng)用程序被修改燕耿、升級(jí)、用戶需求也在變化姜胖,需要為每個(gè)應(yīng)用程序識(shí)別潛在威脅誉帅、對(duì)應(yīng)的優(yōu)先級(jí)、記錄風(fēng)險(xiǎn)并采取措施。
? ? 有必要為讀者梳理一次“架構(gòu)設(shè)計(jì)安全分析辦法”更容易從頂層設(shè)計(jì)理解這一步所做的工作蚜锨。架構(gòu)安全分析重點(diǎn)關(guān)注三個(gè)階段:安全控制档插、系統(tǒng)設(shè)計(jì)、軟件開(kāi)發(fā)過(guò)程亚再,威脅建模是第二階段其中一部分工作郭膛。我們實(shí)施安全防御利用信息不對(duì)稱(chēng)的其中一個(gè)門(mén)檻就是安全控制,包括身份認(rèn)證氛悬、授權(quán)则剃、加密原等則,這也是在滲透測(cè)試和安全審計(jì)重點(diǎn)關(guān)注的點(diǎn)如捅;在系統(tǒng)設(shè)計(jì)分析時(shí)棍现,先規(guī)劃掌握架構(gòu)圖、DFD數(shù)據(jù)圖(可以從GDPR借用)
伪朽,細(xì)化組件轴咱、中間件、邏輯烈涮。然后執(zhí)行三個(gè)小階段:1朴肺、已知攻擊分析。微軟的STRIDE(STRIDE是欺騙坚洽,篡改戈稿,否認(rèn),信息泄露讶舰,拒絕服務(wù)和特權(quán)提升的首字母縮寫(xiě))方法論是其中一個(gè)有用的工具鞍盗。設(shè)計(jì)層面根據(jù)這個(gè)STRIDE原則、了解曾經(jīng)面臨過(guò)哪些威脅(我強(qiáng)烈建議培訓(xùn)階段應(yīng)業(yè)務(wù)解釋公司曾經(jīng)面臨過(guò)哪些攻擊然后描述抽取出風(fēng)險(xiǎn)來(lái)總結(jié)威脅)跳昼。制定適合自己的威脅列表般甲,然后計(jì)算并考慮如何評(píng)估(DREAD)修復(fù)和設(shè)計(jì)來(lái)降低、轉(zhuǎn)移鹅颊、接受風(fēng)險(xiǎn)敷存。2、識(shí)別特定攻擊堪伍,上一步偏通用原則锚烦,每個(gè)存在的系統(tǒng)各自不同。3帝雇、對(duì)軟件底層依賴(lài)涮俄、供應(yīng)層面進(jìn)行分析。發(fā)現(xiàn)軟件威脅的最好階段是上述三個(gè)階段尸闸,實(shí)施以上的工作彻亲,投入的安全修復(fù)成本將降低數(shù)倍孕锄。
????威脅模型可以通過(guò)任何方式展示、文檔苞尝、列表硫惕、圖表,但是至少需要包括軟件組件野来、信任邊界、安全控制措施踪旷、數(shù)據(jù)的描述以及對(duì)應(yīng)風(fēng)險(xiǎn)的優(yōu)先級(jí)曼氛;未發(fā)生的威脅的可能性排序;對(duì)存在的風(fēng)險(xiǎn)令野、可能的攻擊的策略措施的回顧舀患;減少威脅的補(bǔ)救措施。
????我們必須意識(shí)到SDLC并不是銀彈气破,根本沒(méi)有什么是最佳實(shí)踐聊浅。威脅建模這件事難以推行是有客觀困難的。軟件開(kāi)發(fā)從瀑布流模式到公司推廣開(kāi)展的敏捷實(shí)踐中现使,需要作出以下改變:從關(guān)注各階段文檔到快速關(guān)注缺陷和溝通反應(yīng)低匙;從建模階段作為總系統(tǒng)的重點(diǎn)投入方向到把安全特性盡量納入小的迭代周期,接納威脅驅(qū)動(dòng)設(shè)計(jì)碳锈;從一些重型的工具(STRIDE)到支持定期處理迭代產(chǎn)生的威脅顽冶;從依賴(lài)有條不紊的測(cè)試計(jì)劃發(fā)布到實(shí)現(xiàn)極致的工具自動(dòng)化;從基于經(jīng)驗(yàn)歸檔威脅庫(kù)到支持機(jī)器學(xué)習(xí)售碳、物聯(lián)網(wǎng)强重、云時(shí)代的新威脅。
????工具
????這項(xiàng)安全能力學(xué)習(xí)的梯度陡增贸人,從業(yè)者需要具備專(zhuān)業(yè)安全间景、開(kāi)發(fā)、系統(tǒng)知識(shí)而且輔助的自動(dòng)化程序很少艺智。而系統(tǒng)創(chuàng)建完整的安全威脅模型需要深入了解倘要。準(zhǔn)確的模型也需要依靠清楚業(yè)務(wù)過(guò)去面臨的攻擊案例和攻擊模式(MITRE ATT&CK)。
????開(kāi)源力惯、商業(yè)工具可以輔助我們快速碗誉、美觀、系統(tǒng)地構(gòu)建威脅模型父晶、輸出威脅文檔哮缺。我們總不能在白板上“開(kāi)局一張圖,其他全靠說(shuō)”甲喝〕⑽《威脅建模:設(shè)計(jì)和交付更安全的軟件》書(shū)里提到的工具大都已經(jīng)過(guò)時(shí),但是從側(cè)面可以讓我們了解到不要言威脅建模就必稱(chēng)STRIDE,要作為專(zhuān)家借著深厚的安全領(lǐng)域功底,運(yùn)用威脅建模思想作為工具進(jìn)行實(shí)踐糠溜〈就妫“盲人摸象不如走馬觀花,走馬看花不如駐馬看花非竿,駐馬看花不如下馬看花”蜕着,下一番苦功夫深入一線、貼近業(yè)務(wù)红柱、豐富經(jīng)驗(yàn)承匣、充實(shí)積累,創(chuàng)建有價(jià)值的建模知識(shí)锤悄。本系列將以一些案例和工具說(shuō)明韧骗,通過(guò)大量文章帶領(lǐng)大家共同探討這種由經(jīng)驗(yàn)豐富的專(zhuān)家驅(qū)動(dòng)的分析技術(shù)能否應(yīng)用于工具自動(dòng)化?
-
trike?
octotrike是一種不同STRIDE的方法論零聚, http://www.octotrike.org/tools.shtml 是單獨(dú)的excel文件袍暴,可以輔助提高威脅建模的效率和有效性。trike是一個(gè)統(tǒng)一的安全審計(jì)概念框架,從風(fēng)險(xiǎn)管理和資產(chǎn)為中心的角度用工具將威脅模型以相對(duì)可靠隶症,可重復(fù)的方式實(shí)現(xiàn)政模,可以描述系統(tǒng)從其高級(jí)架構(gòu)到其實(shí)現(xiàn)細(xì)節(jié)的安全特性。包含了一定的自動(dòng)化攻擊推導(dǎo)功能蚂会。不推薦使用览徒。
-
seasponge是mozilla出品,https://github.com/mozilla/seasponge颂龙,使用nodejs編寫(xiě)习蓬,可以拖拽,支持項(xiàng)目文件管理措嵌,缺點(diǎn)是沒(méi)有實(shí)現(xiàn)威脅列表的自動(dòng)生成躲叼,雖近年來(lái)無(wú)人維護(hù),使用起來(lái)還是比較推薦的企巢。
seamonster https://sourceforge.net/projects/seamonster/一款基于攻擊樹(shù)和濫用案例(abuse-cases枫慷,用戶濫用或利用軟件功能中的弱點(diǎn)來(lái)攻擊應(yīng)用程序)模型的攻擊,用來(lái)補(bǔ)充思考勉強(qiáng)可用浪规,思路有些落后或听。
-
owasp-threat-dragon?http://docs.threatdragon.org/?是個(gè)新工具,用Electron實(shí)現(xiàn)了客戶端笋婿,作為owasp孵化項(xiàng)目雄心勃勃誉裆。強(qiáng)烈推薦。
-
pta工具 http://www.ptatechnologies.com/ 是由adam shostack參與咨詢(xún)的一個(gè)商業(yè)工具缸濒,對(duì)于各個(gè)細(xì)節(jié)足丢、條目做得很完善粱腻。推薦。
-
微軟的官方威脅建模工具斩跌。https://docs.microsoft.com/zh-cn/azure/security/azure-security-threat-modeling-tool 绍些,可以訪問(wèn)https://github.com/AzureArchitecture/threat-model-templates下載最新的包含IOT信息的模板,該工具可以自動(dòng)生成識(shí)別威脅報(bào)告耀鸦,具備威脅庫(kù)模板柬批,強(qiáng)烈推薦使用。
https://github.com/izar/pytm? 一個(gè)python庫(kù)袖订,可以用編程當(dāng)時(shí)實(shí)現(xiàn)構(gòu)建數(shù)據(jù)流圖萝快、輸出威脅列表。
https://github.com/stevespringett/threatmodel-sdk 一個(gè)javasdk著角,作用同上。
????下一系列旋恼,本文將以TMT等工具為例吏口,分別介紹基于攻擊樹(shù)和STRIDE的方法實(shí)施以攻擊者和資產(chǎn)為中心的針對(duì)應(yīng)用程序的建模活動(dòng)冰更。大概分為六步:組織推廣产徊、識(shí)別資產(chǎn)、概述有價(jià)值資產(chǎn)的體系結(jié)構(gòu)蜀细、分析應(yīng)用程序內(nèi)的流程舟铜、子流程,創(chuàng)建數(shù)據(jù)流圖奠衔、以列表的方式描述識(shí)別威脅以進(jìn)一步處理谆刨、對(duì)威脅進(jìn)行分類(lèi),復(fù)用該方法归斤、評(píng)估威脅的嚴(yán)重性并采取措施痊夭。
????有朋友反饋說(shuō)涉及安全系列的內(nèi)容每次單詞都看得懂,但是組合在一起的概念看不明白脏里∷遥考慮到我們寫(xiě)文章是為了全面提升組織能力,鞏固心得迫横,接下來(lái)我將盡力寫(xiě)得通俗易懂些番舆。