威脅模型範本(Threat Model Document)

參照標準:Microsoft STRIDE / OWASP Threat Modeling / ISO/IEC 27005:2022
文件用途:系統性識別、分析、評估與處置系統面臨的安全威脅
適用階段:系統設計階段(Design Phase)— Security by Design


📋 章節目錄

  1. 文件資訊
  2. 系統概述
  3. 資料流程圖(DFD)
  4. 信任邊界識別
  5. STRIDE 威脅分析
  6. 威脅風險評估
  7. 緩解措施
  8. 殘餘風險
  9. 威脅追溯矩陣
  10. 附錄

1. 文件資訊

📝 範本

項目內容
文件編號TM-{專案代碼}-{序號}
文件名稱{系統名稱} 威脅模型
版本v{主版本}.{次版本}
狀態草稿 / 審核中 / 核定
建立日期{YYYY-MM-DD}
撰寫者{姓名/角色}
資安審核者{資安人員姓名}
威脅建模方法STRIDE / PASTA / LINDDUN
分析範圍{描述分析涵蓋的系統邊界}

📖 使用說明

  • 威脅模型在架構設計完成後、開發實作前進行
  • 建議組成跨功能團隊:架構師 + 資安人員 + 開發者 + QA
  • STRIDE 是微軟提出的分類法,覆蓋六大威脅類型
  • 本文件需與安全需求清單(SecurityRequirements)互相參照

💡 範例

項目內容
文件編號TM-HRM-001
系統名稱人力資源管理系統(HRMS)
威脅建模方法STRIDE
分析範圍Web 前端、API Gateway、微服務層、資料庫層、外部整合(AD/Email)

2. 系統概述

📝 範本

2.1 系統架構摘要

元件技術角色描述
{元件名稱}{技術/框架}{職責說明}

2.2 資產識別

資產 ID資產名稱資產類型敏感等級擁有者
ASSET-{xxx}{名稱}資料/服務/基礎設施高/中/低{團隊}

📖 使用說明

  • 系統架構摘要提供技術棧全貌,協助識別攻擊面
  • 資產識別需列出需保護的有價值目標(攻擊者感興趣的)
  • 資產敏感等級決定威脅分析的優先順序

💡 範例

2.1 系統架構摘要

元件技術角色描述
Web SPAReact 18 + TypeScript使用者介面
API GatewayKong 3.x請求路由、速率限制、認證
Auth Service.NET 8 + IdentityServer身分認證與 Token 核發
HR Core Service.NET 8 Web API員工/薪資/假勤核心邏輯
PostgreSQLv16關聯式資料儲存
Redisv7Session/Cache 快取
Active DirectoryWindows Server 2022企業帳號整合

2.2 資產識別

資產 ID資產名稱資產類型敏感等級擁有者
ASSET-001員工個資(身分證/地址/緊急聯絡人)資料HR 部門
ASSET-002薪資明細(薪資/獎金/扣款)資料財務部
ASSET-003認證 Token / Session資料系統
ASSET-004API Gateway服務IT 維運
ASSET-005資料庫加密金鑰基礎設施資安團隊

3. 資料流程圖(DFD)

📝 範本

Level 0 - 系統環境圖

外部實體 → [系統邊界] → 外部實體

Level 1 - 子系統分解

DFD 元素符號說明
外部實體矩形系統範圍外的使用者/系統
處理程序圓形系統內部邏輯處理
資料儲存平行線資料庫/檔案
資料流箭頭資料移動方向
信任邊界虛線框安全等級分界

📖 使用說明

  • DFD 是威脅建模的核心輸入,透過視覺化理解資料流向
  • Level 0 呈現系統與外部互動全貌
  • Level 1 展開各子系統,識別每個資料流的信任邊界
  • 建議使用工具:Microsoft Threat Modeling Tool、OWASP Threat Dragon

💡 範例

Level 1 - HRMS 子系統分解

┌─────────────────── 信任邊界:Internet ───────────────────┐
│                                                          │
│  [員工/主管]  ────→  Web SPA (React)                    │
│                                                          │
└─────────────────────────────────────────────────────────┘
                           │ HTTPS (JWT)
┌────────────────── 信任邊界:DMZ ────────────────────────┐
│                           ▼                              │
│                    (API Gateway - Kong)                   │
│                           │                              │
└───────────────────────────┼──────────────────────────────┘
                           │ mTLS
┌────────────────── 信任邊界:Internal ───────────────────┐
│                           ▼                              │
│    (Auth Service) ←── (HR Core Service)                  │
│         │                    │                           │
│         ▼                    ▼                           │
│    [Redis Cache]      [PostgreSQL DB]                    │
│                                                          │
└─────────────────────────────────────────────────────────┘
                           │ LDAPS
┌────────────────── 信任邊界:Enterprise ─────────────────┐
│                           ▼                              │
│              [Active Directory]                           │
│                                                          │
└─────────────────────────────────────────────────────────┘

4. 信任邊界識別

📝 範本

邊界 ID邊界名稱起點終點跨越邊界的資料保護機制
TB-{xxx}{邊界名稱}{元件}{元件}{資料描述}{保護}

📖 使用說明

  • 信任邊界是安全等級不同的兩個區域之間的分界線
  • 跨越信任邊界的資料流是威脅分析的重點(攻擊最可能發生處)
  • 每條跨邊界的資料流都需要相應的保護機制

💡 範例

邊界 ID邊界名稱起點終點跨越邊界的資料保護機制
TB-001Internet → DMZWeb SPAAPI GatewayHTTP 請求 + JWTTLS 1.3、WAF、Rate Limit
TB-002DMZ → InternalAPI GatewayHR Core ServiceAPI 呼叫 + 使用者上下文mTLS、服務網格
TB-003Internal → DBHR Core ServicePostgreSQLSQL 查詢 + 個資連線加密、最小權限
TB-004Internal → EnterpriseAuth ServiceActive DirectoryLDAP 認證請求LDAPS (636 port)

5. STRIDE 威脅分析

📝 範本

STRIDE 分類說明

類型英文說明違反的安全屬性
SSpoofing身份冒充認證(Authentication)
TTampering資料竄改完整性(Integrity)
RRepudiation否認行為不可否認性(Non-Repudiation)
IInformation Disclosure資訊洩露機密性(Confidentiality)
DDenial of Service阻斷服務可用性(Availability)
EElevation of Privilege權限提升授權(Authorization)

威脅列表

威脅 IDSTRIDE目標元件威脅描述攻擊場景
THR-{xxx}S/T/R/I/D/E{元件}{威脅描述}{攻擊者如何利用}

📖 使用說明

  • 逐一對每個 DFD 元素(處理程序、資料儲存、資料流)套用 STRIDE
  • 外部實體通常只分析 S(Spoofing)和 R(Repudiation)
  • 資料儲存通常分析 T、I、D
  • 處理程序所有 STRIDE 類型都適用
  • 每個威脅需具體描述攻擊場景(非泛泛而談)

💡 範例

威脅 IDSTRIDE目標元件威脅描述攻擊場景
THR-001SAPI Gateway偽造 JWT Token 冒充合法使用者攻擊者取得 JWT Secret 或使用弱演算法偽造 Token
THR-002THR Core Service竄改薪資計算邏輯內部人員修改薪資計算 API 參數,增加自己薪資
THR-003RHR Core Service管理員否認執行薪資調整操作管理員調整薪資後聲稱未進行此操作
THR-004IPostgreSQL員工個資大量外洩SQL Injection 或未加密備份遭竊
THR-005DAPI GatewayDDoS 癱瘓打卡/請假功能攻擊者以大量請求衝擊 API Gateway
THR-006EAuth Service一般員工提升至 Admin 權限利用 IDOR 漏洞修改角色欄位
THR-007IRedis CacheSession 資料從快取洩露未加密的 Redis 連線被中間人竊聽
THR-008SActive Directory暴力破解 AD 帳號密碼對 LDAP 認證端點進行字典攻擊

6. 威脅風險評估

📝 範本

風險評分標準(DREAD 或自訂)

評分維度1(低)2(中)3(高)
影響程度(Impact)非敏感資料部分敏感資料核心/大量敏感資料
發生可能性(Likelihood)需高階技術+內部存取中等技術+外部存取低門檻+自動化工具
可利用性(Exploitability)無公開漏洞有概念驗證有公開利用工具

風險評估結果

威脅 ID影響可能性可利用性總分風險等級
THR-{xxx}{1-3}{1-3}{1-3}{N}高/中/低

📖 使用說明

  • 風險等級 = 影響 × 可能性 × 可利用性(或加總取平均)
  • 高風險(7-9分):必須在上線前處置
  • 中風險(4-6分):計畫性處理,可接受短期風險
  • 低風險(1-3分):記錄並持續監控
  • 風險評估結果決定緩解措施的優先順序

💡 範例

威脅 ID影響可能性可利用性總分風險等級
THR-0013227
THR-0023115
THR-0032237
THR-0043238
THR-0052338
THR-0063227
THR-0072125
THR-0083238

7. 緩解措施

📝 範本

威脅 ID緩解措施對應安全需求實作方式負責人狀態
THR-{xxx}{緩解描述}SEC-{xxx}{技術/流程手段}{人員}未開始/進行中/完成

📖 使用說明

  • 每個高/中風險威脅都需要對應的緩解措施
  • 緩解策略分為四種:
    • 消除:重新設計,完全移除威脅(最佳)
    • 緩解:降低影響或可能性(最常見)
    • 轉移:轉移風險給第三方(保險/外包)
    • 接受:記錄風險,不處理(需管理層核准)
  • 緩解措施需連結到安全需求清單(SecurityRequirements)中的具體需求

💡 範例

威脅 ID緩解措施對應安全需求實作方式負責人狀態
THR-001使用 RS256 非對稱簽章 + 短效 TokenSEC-AUTH-006JWT RS256 + 15min Expiry後端組完成
THR-003所有薪資操作記錄不可竄改稽核日誌SEC-LOG-001, SEC-LOG-004Append-only audit log + 時間戳簽章後端組進行中
THR-004個資欄位加密 + 參數化查詢 + WAFSEC-DATA-001, SEC-INPUT-002AES-256 + EF Core parameterized + ModSecurity全端完成
THR-005API Rate Limiting + CDN + Auto-scalingSEC-INPUT-005Kong rate-limit plugin (100 req/min) + Azure CDNDevOps完成
THR-006伺服器端角色驗證 + 單元測試覆蓋SEC-AUTHZ-001, SEC-AUTHZ-003[Authorize(Roles=“Admin”)] + IDOR 防護後端組完成
THR-008帳號鎖定 + MFA + IP 白名單SEC-AUTH-002, SEC-AUTH-003AD 帳號鎖定策略 + Azure MFAIT 維運進行中

8. 殘餘風險

📝 範本

威脅 ID殘餘風險描述緩解後風險等級接受理由核准者核准日期
THR-{xxx}{緩解後仍存在的風險}高/中/低{為何可接受}{管理層}{日期}

📖 使用說明

  • 殘餘風險 = 實施緩解措施後仍無法完全消除的風險
  • 所有殘餘風險需經管理層正式核准(Risk Acceptance)
  • 殘餘風險需定期重新評估(至少每季度)
  • 高殘餘風險應有補償性控制措施

💡 範例

威脅 ID殘餘風險描述緩解後風險等級接受理由核准者核准日期
THR-005DDoS 超過 CDN 容量時仍可能影響可用性CDN 已可承受 99% 場景,剩餘機率極低CTO2026-05-15
THR-007Redis 若被直接存取仍可讀取 SessionRedis 位於 VPC 內網,無外部可達性資安主管2026-05-15

9. 威脅追溯矩陣

📝 範本

威脅 IDDFD 元素信任邊界安全需求緩解措施測試案例
THR-{xxx}{元件}TB-{xxx}SEC-{xxx}{緩解}TC-{xxx}

📖 使用說明

  • 追溯矩陣確保每個威脅都能向前追溯到架構元素、向後追溯到測試案例
  • 完整鏈路:DFD 元素 → 信任邊界 → 威脅 → 安全需求 → 緩解措施 → 測試驗證
  • 若某威脅沒有對應的測試案例,代表測試覆蓋不足

💡 範例

威脅 IDDFD 元素信任邊界安全需求緩解措施測試案例
THR-001API GatewayTB-001SEC-AUTH-006RS256 + 短效 TokenTC-SEC-001: Token 偽造測試
THR-004PostgreSQLTB-003SEC-DATA-001, SEC-INPUT-002加密 + 參數化查詢TC-SEC-004: SQL Injection Pen Test
THR-005API GatewayTB-001SEC-INPUT-005Rate LimitingTC-SEC-005: 壓力測試 + DDoS 模擬
THR-006Auth ServiceTB-002SEC-AUTHZ-001伺服器端授權TC-SEC-006: IDOR 測試

10. 附錄

📝 範本

10.1 威脅建模會議記錄

日期參與者討論主題決議
{日期}{姓名,角色}{主題}{決議}

10.2 參考資料

資源用途
OWASP Threat Modeling Cheat Sheet威脅建模方法論參考
Microsoft STRIDE per Element每元素類型適用的 STRIDE 分析
OWASP ASVS 4.0.3安全需求對照標準
ISO/IEC 27005:2022風險評估方法論

📖 使用說明

  • 會議記錄保留威脅建模決策的可追溯性
  • 建議威脅模型每個 Sprint 或重大架構變更時更新
  • 工具推薦:Microsoft Threat Modeling Tool (免費)、OWASP Threat Dragon (開源)

💡 範例

10.1 威脅建模會議記錄

日期參與者討論主題決議
2026-04-10張架構師, 李資安, 王開發Level 1 DFD 繪製與邊界確認TB-001~TB-004 確認
2026-04-12張架構師, 李資安, 陳 QASTRIDE 分析(THR-001~008)8 個威脅確認,6 個為高風險
2026-04-15CTO, 資安主管, 張架構師殘餘風險接受THR-005, THR-007 殘餘風險核准接受

📌 範本使用注意事項

  1. 本範本依據 Microsoft STRIDE 與 ISO/IEC 27005:2022 風險管理框架編製
  2. 威脅模型需在架構設計確定後、開發實作前完成(Shift-Left Security)
  3. 搭配「安全需求清單」使用 — 威脅分析結果需轉化為安全需求
  4. 搭配「測試計畫」使用 — 高風險威脅需有對應的安全測試案例
  5. 每次重大架構變更或新功能增加時,需重新進行威脅建模