| 名称 | 轻量威胁建模 |
| 描述 | 当需要在需求评审或架构设计阶段快速完成轻量威胁建模时使用。该技能用四步法(画数据流、标信任边界、套 STRIDE、排优先级)产出一页纸威胁清单与可落地缓解措施,不依赖专业安全团队。适用于 Web 应用、移动端后端、内部系统、API 网关与云上架构的安全评审。关键词:威胁建模、STRIDE、数据流图、信任边界、安全评审、风险评估、缓解措施、攻击面、权限提升、信息泄露、拒绝服务、身份伪造、安全设计、DevSecOps。 |
轻量威胁建模
在半天内把“这套系统可能怎么被攻破”讲清楚,并排出先做哪几件事。
何时使用
- 新系统或重大改版的设计评审。
- 引入第三方服务、开放外部 API、跨信任域传数据。
- 安全事件复盘后需要系统性排查。
- 合规要求提供威胁建模记录。
不适用:渗透测试执行、代码级漏洞审计(可衔接对应技能)。
输入
- 架构图或组件清单(客户端、网关、服务、数据库、队列、第三方)。
- 数据清单:敏感级别、存储位置、流转路径。
- 用户角色与权限模型。
- 部署形态:云、混合、私有化。
信息不足时,按“外部可直连全部组件”的最坏假设建模。
工作流
第 1 步:画数据流
只保留五类元素:外部实体、进程、数据存储、数据流、信任边界。
标注每条数据流的:协议、是否加密、是否携带个人数据、是否跨边界。
第 2 步:标信任边界
常见边界:
- 浏览器/App 与服务端之间。
- 公网与内网之间。
- 服务与数据库之间。
- 自有系统与第三方之间。
- 普通用户与管理后台之间。
每条跨边界数据流都是重点审查对象。
第 3 步:套 STRIDE
逐组件逐数据流提问,按 references/stride-questions.md:
| 威胁 | 含义 | 典型问题 |
|---|---|---|
| S 身份伪造 | 冒充他人或服务 | 令牌可伪造吗?服务间如何互认? |
| T 数据篡改 | 未授权修改 | 传输与存储完整性如何保证? |
| R 抵赖 | 否认操作 | 关键操作有不可篡改审计吗? |
| I 信息泄露 | 数据外泄 | 日志、错误信息、备份是否含敏感数据? |
| D 拒绝服务 | 可用性受损 | 有无速率限制与资源配额? |
| E 权限提升 | 越权 | 授权检查在服务端每个入口都做了吗? |
第 4 步:排优先级
用“可能性 × 影响”两维打分,再叠加“是否已有缓解”:
- 高:外部可利用、影响数据或资金、无现有控制。
- 中:需要一定前置条件,或已有部分控制。
- 低:内部人员场景、影响有限。
不要用 CVSS 精度伪装确定性,评审阶段用三档足够。
第 5 步:给缓解措施
每条威胁至少给一个“设计层”措施,而不是“加强安全意识”:
- 认证:短时令牌 + 轮换密钥 + 双向 TLS。
- 授权:服务端强制校验、最小权限、按资源校验归属。
- 完整性:签名、校验和、事务。
- 审计:结构化日志、只追加存储、保留期限。
- 可用性:限流、熔断、配额、异步削峰。
- 隐私:字段级加密、脱敏、最小采集。
检查清单
- [ ] 所有外部入口都标在图上。
- [ ] 每条跨信任边界的数据流都有协议与认证说明。
- [ ] 六类威胁都逐组件过了一遍,没有整类遗漏。
- [ ] 每条威胁都有对应缓解措施与负责人。
- [ ] 管理后台与普通用户路径分别建模。
- [ ] 第三方依赖的信任假设已写明。
- [ ] 残余风险已记录并被接受。
- [ ] 输出能在一页内读完。
输出模板
## 系统范围
...
## 信任边界
1. ...
## 威胁清单
| # | 组件/数据流 | 威胁 | 场景 | 可能性 | 影响 | 优先级 | 缓解 |
| --- | --- | --- | --- | --- | --- | --- | --- |
## 残余风险
- ...
## 后续动作
| 动作 | 负责人 | 期限 |
| --- | --- | --- |
反模式
- 只列漏洞不画数据流,遗漏跨边界问题。
- 把威胁建模做成合规文档,写完就归档。
- 缓解措施写成“加强管理”“提高意识”。
- 只建模登录,不建模数据导出与后台。
- 认为内网可信,忽略横向移动。
参考文件
references/stride-questions.md:STRIDE 提问清单。references/mitigation-catalog.md:常见缓解措施与验证方式。