威胁建模指南
STRIDE 威胁类别
| 字母 | 威胁 | 违反属性 | 示例 | 缓解措施 |
|---|---|---|---|---|
| S | 欺骗 (Spoofing) | 认证 | 伪造身份、IP 欺骗 | 强认证、MFA、证书 |
| T | 篡改 (Tampering) | 完整性 | 修改传输或静态数据 | 数字签名、HMAC、TLS |
| R | 否认 (Repudiation) | 不可否认性 | 否认曾执行某操作 | 审计日志、数字签名 |
| I | 信息泄露 (Info Disclosure) | 机密性 | 数据泄露、详细错误信息 | 加密、访问控制、错误处理 |
| D | 拒绝服务 (DoS) | 可用性 | DDoS、资源耗尽 | 速率限制、自动扩缩容、CDN |
| E | 权限提升 (EoP) | 授权 | SQL 注入提权、缓冲区溢出 | 最小权限、输入验证 |
威胁建模流程
| 步骤 | 活动 | 产出 |
|---|---|---|
| 1. 确定范围 | 定义建模对象(应用、功能、系统) | 范围文档 |
| 2. 分解 | 创建数据流图(DFD):进程、数据存储、外部实体、流、信任边界 | DFD 图 |
| 3. 识别威胁 | 对 DFD 每个元素应用 STRIDE | 威胁列表 |
| 4. 威胁评级 | 使用 CVSS 或 DREAD 评分;按风险排优先级 | 风险评级威胁列表 |
| 5. 缓解 | 为每个威胁设计控制措施 | 安全需求、设计变更 |
| 6. 验证 | 审查缓解措施;设计变更时更新模型 | 更新后的威胁模型 |
DREAD 风险评分
| 因素 | 问题 | 评分(1–10) |
|---|---|---|
| 危害 (Damage) | 被利用后危害有多大? | 1=微小,10=灾难性 |
| 可重现性 (Reproducibility) | 攻击有多容易重现? | 1=困难,10=轻而易举 |
| 可利用性 (Exploitability) | 需要多少技能/工具? | 1=专家,10=零门槛 |
| 受影响用户 (Affected Users) | 影响多少用户? | 1=一人,10=全部 |
| 可发现性 (Discoverability) | 漏洞有多容易发现? | 1=困难,10=显而易见 |