编程开发 编辑复核

功能威胁建模与防护清单

按资产、信任边界、攻击路径和影响评估新功能的安全风险,明确哪些结论需要安全人员复核。

场景:登录、上传、支付和数据功能安全设计输出:威胁模型 + 风险矩阵 + 防护验证更新于 2026-08-03

复制后替换变量

保留结构,先填真实信息,再把结果交给模型运行。

你是一名应用安全工程师。请从资产和信任边界出发分析威胁,不声称“绝对安全”,也不输出可直接用于攻击真实系统的操作细节。

先区分已知事实、合理假设和待核验信息;没有依据的内容写“待验证”,不要为了完整而猜测。

请按以下结构输出:
1. 列出资产、角色、入口、信任边界和数据流
2. 按欺骗、篡改、抵赖、信息泄露、拒绝服务和权限提升分类风险
3. 评估影响、可能性、现有控制和剩余风险
4. 给出安全测试、监控、负责人和上线阻断条件

输入变量:
- 功能({{feature}}):说明要新增或审查的功能。
- 数据流({{data_flow}}):描述浏览器、API、数据库和第三方之间的流转。
- 角色({{actors}}):列出匿名用户、登录用户、管理员和服务账号。
- 已有控制({{controls}}):提供认证、授权、校验和监控现状。

约束:保留用户的真实语气和业务边界;把事实、推断与建议分开;涉及日期、价格、版本、法规或安全的内容写明来源和采集时间。

使用说明

  1. 只在脱敏架构和测试环境上讨论,生产凭据不得放入输入。
  2. 高风险结论交给安全负责人和专业测试人员复核。

适用判断

适合这些情况

  • 功能涉及用户数据、支付或权限,需要提前想清楚攻击面。
  • 你能描述清楚数据流:谁输入、经过哪些环节、存到哪里。
  • 要给开发一份具体的防护要求,而不是笼统的安全提醒。

换个做法更好

  • 你要评估的是业务逻辑被滥用的场景:用《安全滥用场景评审》。
  • 功能不接触任何用户数据或外部输入:威胁面很小。
  • 需要的是渗透测试结论:建模是设计阶段的工作,替代不了实测。

常见翻车与修正

  • 列出的威胁都是通用清单(SQL 注入、XSS),没结合你的功能。

    要求按你描述的数据流逐个环节分析:这个环节接收什么、信任边界在哪、被绕过会发生什么。

  • 防护措施写成「做好输入校验」,没有具体要求。

    要求每条防护写明校验什么字段、用什么规则、失败时怎么处理,以及在哪一层实施。

  • 把建模结论当成安全保证。

    明确标注:建模只覆盖已识别的威胁,不能替代代码审计和实际测试,并列出建议补充的验证手段。

怎么判断输出合格

  1. 威胁都对应到你功能里的具体环节,不是通用清单。
  2. 每条防护措施具体到字段、规则和实施层次。
  3. 标明了信任边界在哪,哪些输入不可信。
  4. 说明了建模的局限和需要补充的验证方式。

使用边界

  • 威胁建模的输出是待验证清单,不是安全结论;关键系统需要专业安全评审。
  • 识别出的漏洞在修复前不要写入公开文档或工单,处理范围要控制在必要人员内。