FIND研究員:李啟榮
在DevOps的實施過程中,軟體安全性的考慮也成為持續整合、持續交付的需求之一,來保障軟體上線運作時資料、系統的機密性、完整性和可用性;而微軟推出整合STRIDE安全模型的視覺化「威脅建模工具」,使開發維運人員以簡單明瞭的方式,了解各項威脅來源和影響,為安全架構的設計奠定基礎。
威脅建模原理:STRIDE模型
微軟根據軟體的內在/外在威脅來源,歸納出STRIDE六個字首關鍵字,包含欺騙(Spoof)、篡改(Tampering)、否認(Repudiation)、資訊洩露(Information disclosure)、阻斷服務(Denial-of-service)、權限提升(Elevation privilege);而微軟威脅建模工具則以STRIDE模型為核心,來剖析軟體架構暴露出來安全性問題,作為威脅預防和弱點補救的依據。
資料來源:Microsoft
圖1:軟體架構流程和暴露的弱點種類
在威脅建模工具的主介面下方,為問題分析介面,藉由STRIDE六種類別來分析系統架構的問題,並針對暴露出來的威脅,提供預防和改善的建議,從設計階段的源頭減少隱患。
資料來源:Microsoft
圖2:威脅詳細說明與建議
威脅建模範例:以Azure為例
威脅建模工具除了有不同角色、不同元件的資料流以外,還有「信任邊界」做為資料流在不同網段進出的關卡,來阻止外來的惡意活動。
以下圖Azure專案為例,由於Azure專案架設在微軟Azure雲端主機上,需藉由信任邊界來區分企業客戶網段、外網、Azure網段,企業網段以HTTP跟Azure建立橋樑,再串接Azure資料庫與分析引擎,構成一個完整的流程。
資料來源:Microsoft Azure GitHub
圖 3:Azure威脅建模個案
除了STRIDE六種分類以外,還要搭配信任邊界機制來區隔網段,以縱深防禦策略保護各項功能的安全和完整性,在提升系統功能安全性之餘,配合信任邊界來預防外部威脅。
小結
威脅建模可以在軟體的雛型開發階段,導入安全設計思維,以威脅模型和威脅來源的分析,來減少開發過程中的缺失,造成牽一髮而動全身的危害。而安全模型也要在後續的迭代循環中不斷驗證和修正,來評估和保障安全模型的可行性,並在日後上線部署時,保障系統本體和使用者的可用性、完整性和資料保密性。
參考來源:
參考資料
DaNeil, C. (2020, February 11). Threat Modeling for Beginners. Retrieved March 14, 2021, from Dev.to: https://dev.to/caffiendkitten/why-you-need-threat-modeling-3n6p
Hernan, S., Lambert, S., Ostwald, T., & Shostack, A. (2019, October 7). Uncover Security Design Flaws Using The STRIDE Approach. Retrieved March 12, 2021, from Microsoft: https://docs.microsoft.com/en-us/archive/msdn-magazine/2006/november/uncover-security-design-flaws-using-the-stride-approach
(2019, December 30). Azure Template - Microsoft Security Threat Model Stencil. Retrieved March 14, 2021, from GitHub: https://github.com/AzureArchitecture/threat-model-templates
(2019, July 31). Microsoft Threat Modeling Tool threats. Retrieved March 14, 2021, from Microsoft Azure GitHub: https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/security/develop/threat-modeling-tool-threats.md