Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~
本篇是 建構安全軟體開發 系列文的 EP19。
閱讀本篇前,可以先回顧一下 EP17 與 EP18 所提及的觀點。
本篇使用 Microsoft Threat Modeling Tool 搭配 S.T.R.I.D.E 模型進行 Thread Modeling 分析。
PS 若有需要 Microsoft Threat Modeling Tool 可透過 Click-to-Download 安裝。
開啟 Microsoft Threat Modeling Tooling 之後,在 "Template for New Models" 這個下拉選單選到 "SDL TM Knowledge Base" 的選項:
接著點選 "Create A Model":
進到 Threat Modeling 的繪製 DFD 畫面:
展示範例就先做一個很基本網路應用的 DFD 設計。
從 Generic Process 當中拉一個 Browser Client:
再從 Generic Process 當中拉一個 Web Application:
接著再到 Generic Data Flow 當中將 Browser Client 與 Web Application 用 HTTP 連線將兩邊互相串接起來:
找到 Generic Trust Line Boundary 選到 Internet Boundary,並且在 Browser Client 與 Web Application 中畫出界線:
到這邊完成一個 DFD 的展示範例最原始的基本圖型。
透過 Menu 當中的 View 選項,找到 Analysis View 後點選:
接著會針對目前的設計看到 Threat List 出現相關的 S.T.R.I.D.E 分析:
點選 Threat List 當中出現相關的 S.T.R.I.D.E 分析的任何一條 Threat,再 Threat Properties 當中會告知會面臨風險的詳細資訊:
接著在 Threat List 透過 Category 的欄位排序:
看到 ID 編號 9 與 18 這兩個屬於 S.T.R.I.D.E 模型當中的 I (Information disclosure) 的 Threat,要面對這兩個 Threat 的可能的方式是將 HTTP 改為 HTTPS 的連線模式。
可從目前繪製的 DFD 當中 HTTP 改為 HTTPS 的連線模式可做以下的操作直接轉換:
針對原本的 HTTP 連線點選右鍵選單,選到 Convert To -> Generic Data Flow。
轉換成 Generic Data Flow。
針對 Generic Data Flow 連線點選右鍵選單,選到 Convert To -> HTTPS。
轉成 HTTPS 連線。
變更 Client To Application 連線為 HTTPS 時,可以注意到 Threat List 當中 ID 編號 9 的 Threat 消失。
繼續變更 Application To Client 連線為 HTTPS,完成後可以注意到 Threat List 當中 ID 編號 18 的 Threat 消失。
PS 其實除了編號 9、18 的 Threat 消失外,還有其他的 Threat 消失,變更後的 Threat 總計為 17 個,在尚未變更為 HTTPS 連線時的 Threat 為 23 個。
如果要針對目前的 DFD 當中的 ID 編號為 1 的這個 Threat 屬於 S.T.R.I.D.E 模型當中的 T (Tampering) 的 Threat。
要面對這個 Threat 的可能的方式是將 Web Application 當中的 Input 與 Output 進行處理。
可從目前繪製的 DFD 當中 Web Application 的連線 Input 與 Output 進行改變:
針對原本的 Web Application 這個 Process 點選右鍵選單,選到 Property。
找到 Sanitizes Input。
透過下拉選單調整為 Yes。
找到 Sanitizes Output。
透過下拉選單調整為 Yes。
變更 Web Application 當中的 Input 與 Output 進行處理,可以注意到 Threat List 當中 ID 編號 01 的 Threat 消失。
注意要對應實際開發的系統去繪製 DFD 去取得對應的 Threat 報告,所以如果未能做到這些改變,則不該進行上述兩點的 DFD 設計。
最後,可以透過 Microsoft Threat Modeling Tool 進行 Threat 報告。
在 Menu 選單找到 "Reports" 再選到 "Create Full Report...":
在出現的對話視窗當中點選 "Generate Report":
會產生一個 HTML 檔案,在這個 HTML 檔案除了會有綜合整理的 Summary 之外,還會針對 DFD 當中每個 Data Flow 去進行 Threat 分析。
從 Browser Client 到 Web Application:
從 Web Application 到 Browser Client:
最後再透過此 Report 進行 S.T.R.I.D.E 檢視:
如果其項目存在則必須描述其理由,並解釋該風險如何使其成為 剩餘風險 EP13。
另外,DFD 的圖例可參考下圖解釋:
上圖取自 Threat Modeling Process 的 Symbols 描述圖。