今天我們要來學習新的觀念,叫做威脅建模,他可以幫助我們系統性地找出可能被利用的攻擊頁面、評估風險、並決定優先修補項目。
威脅建模是一種系統化的方法,用來在系統設計或開發階段中識別、分析與評估潛在的安全威脅與風險。透過了解系統的資產、攻擊面與可能的攻擊者,威脅建模能協助團隊預先找出弱點,制定防禦措施,從而在問題發生前降低安全風險。
1.列出資產(Assets):敏感資料、憑證、API、資料庫、服務、第三方套件
2.畫出資料流程圖(DFD):把系統分成使用者、前端、後端、DB、第三方,標出輸入點與信任邊界
3.識別威脅(Threats):用 STRIDE 或其他框架找可能的攻擊種類(Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, Elevation of privilege)
4.評估與優先順序(Risk):對每個威脅評估可能性與影響(例:1-5 分),計算風險分數,列出可行的緩解措施(mitigations)
資料流程圖範例:
[User] --> (Web UI) --> (API Server) --> (DB)
\-> (第三方 OAuth)
S-Spoofing(冒用):攻擊者假冒使用者或服務
緩解:強化認證(MFA)、使用短期token、OAuth驗證流程
T-Tampering(竄改):資料在傳輸或儲存被修改
緩解:資料簽章、TLS、輸入驗證、完整性檢查
R-Repudiation(否認性):行為無法追溯或證據不足
緩解:完整日誌(含時間、來源 IP、user id)、不可否認性的審計紀錄
I-Information disclosure(洩密):敏感資料被外洩
緩解:資料加密(at-rest & in-transit)、最小權限、避免在日誌寫入敏感欄位
D - Denial of Service(拒絕服務):資源被耗盡,導致服務不可用
緩解:速率限制、彈性擴展、WAF、資源配額
E - Elevation of privilege(權限提升):低權限帳號取得更高權限
緩解:細粒度授權、權限分離、審計、最小權限原則
舉例:SQLi在搜尋欄被利用,Likelihood=4, Impact=5 → 風險=20(高優先修)
1.先修高風險(風險分數>12),特別是可導致權限取得或敏感資料外洩的漏洞
2.能大幅降低多個威脅的控制優先(例如:開啟HTTPS、加強日誌、設定HttpOnly cookie)
3.易修且高效益的項目先做(低投入、高回報)
今天我們學了基本的甚麼是威脅建模,並且說明如何簡易的製作及評估,明天開始我們會進入總結