Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~
本篇是 建構安全軟體開發 系列文的 EP18。
威脅模型的方法論在很多方面很有幫助,尤其用來協助建立描述系統所面對的抽象威脅時,透過這些威脅模型的方法論可以快速地了解起各種這些抽象威脅的實質概念。
不同種類的方法論適合不同形式的系統,甚至可能在同一個系統中可透過多個方法論來建構其威脅模型。
在前一回的 EP17 當中所提到的工具,就採納其下要介紹的幾種方法論來建構。
以上六點英文的字首形成 S.T.R.I.D.E,而其實 S.T.R.I.D.E 也正對應著在 EP02 所提的 C.I.A. Traid 與 A. A. A. 原則的 反/正 概念。
所以若從 C.I.A 與 A. A. A. 的順序來看 S.T.R.I.D.E 時,就形成:
Confidentiality <-> Information disclosure
Integrity <-> Tampering
Availability <-> Denial of Service
Authentication <-> Spoofing
Authorization <-> Elevation of privilege
Accounting <-> Repudiation
以上五點英文的字首形成 D.R.E.A.D,常跟上述的 S.T.R.I.D.E 共同被考慮,並針對其中的每個 Risk 進行上述的 5 項指標的每項指標,在各種條件與考慮下評估分數(1 ~ 10)並對給予此分數的原因進行紀錄,最後再看其分數是否超過當初預定的數值。若有,則需開始採取修正作為。
此方法論涵蓋了下列七種面向:
Scope 要定在一定的區域/範圍中去討論,Depedencies 要建構在怎樣的安全基礎上去討論。
攻擊樹 (Attack Trees) 是由 Bruce Schneier 於 1999 年所提出的安全威脅模型去討論安全威脅。
樹根是所要攻擊的目標,樹葉或其分枝則是描述如何攻擊的手段,所以在系統威脅分析時會產生很多且龐大的攻擊樹。
雖然如此,在一定的觀點上,攻擊樹是可以協助我們判斷系統所存在的威脅與決定要如何應對攻擊的方式。
從 Safecode.org 所整理的方法論當中還有其他四個:
有興趣可以參考上述 Safecode.org 的 Tactical Threat
Modeling 文件 的 11 頁。
若用中文來翻譯,可能可以把 Weakness 解釋為 "弱點";Vulnerability 解釋為 "漏洞"。
所以,在應用/軟體/系統/服務尚未被真正開始進行實作之前,是不存在其 Vulnerability 的,透過威脅模型的建構可以識別出其應用/軟體/系統/服務可能存在的 Weakness 而提早防範。
若用中文來翻譯,可能可以把 Risk 解釋為 "風險";Threat 解釋為 "威脅"。
風險: 客觀存在標的/目標物上的不確定影響。
威脅: 一種潛在造成但不願發生的意外且其結果會對其造成損害。