关于 security-threat-model
面向评估系统架构与数据流的安全威胁建模 Skill。它以信任边界和 STRIDE 组织分析,并指导制定缓解措施、监控方案和风险优先级。
主要功能
- 01五步威胁建模流程
- 02信任边界映射
- 03使用 STRIDE 识别威胁
- 04数据敏感度分类
- 05缓解措施与风险排序
适用场景
- 01为 Web 应用建模威胁
- 02审查第三方 OAuth API 的边界
- 03为微服务系统确定控制措施优先级
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ lyndonkl/ claude --skill security-threat-model安装后在 Claude Code 中输入/security-threat-model确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
resources/methodology.mdtemplate.mdresources/evaluators/rubric_security_threat_model.json详细介绍
安全威胁模型
目录
工作流
复制此清单并跟踪进度:
Security Threat Model Progress:
- [ ] Step 1: Map system architecture and data flows
- [ ] Step 2: Identify trust boundaries
- [ ] Step 3: Classify data and compliance requirements
- [ ] Step 4: Apply STRIDE to identify threats
- [ ] Step 5: Define mitigations, monitoring, and prioritize risks
步骤 1:绘制系统架构和数据流
记录组件、外部服务、用户、数据存储和通信路径。架构示例请参阅常见模式。对于简单明了的系统 → 使用 resources/template.md。
步骤 2:识别信任边界
标记数据跨越安全域的位置(用户 → 服务端、服务端 → 数据库、内部 → 第三方)。边界类型请参阅信任边界映射。
步骤 3:对数据和合规要求分类
评估数据敏感度(公开、内部、机密、受限),识别 PII/PHI/PCI,并记录合规义务(GDPR、HIPAA、PCI DSS)。分类表请参阅 resources/template.md。
步骤 4:应用 STRIDE 识别威胁
针对每个信任边界和数据流,系统地检查全部六类 STRIDE 威胁。威胁识别方法请参阅 STRIDE 框架。对于攻击面较多的复杂系统 → 阅读 resources/methodology.md,了解高级攻击树分析和 DREAD 评分。
步骤 5:制定缓解措施、监控方案并确定风险优先级
提出预防性、检测性和纠正性控制措施,建立监控和告警机制,并按风险评分(可能性 × 影响)确定优先级。使用 resources/evaluators/rubric_security_threat_model.json 进行自我检查。最低标准:平均分 ≥ 3.5。
STRIDE 框架
S - 身份欺骗
- 威胁:攻击者冒充合法用户或系统
- 示例:凭据被盗、会话劫持、来电显示欺骗、电子邮件欺骗
- 缓解措施:多因素身份验证、证书验证、加密签名、双向 TLS
T - 数据篡改
- 威胁:未经授权修改传输中或静态存储的数据
- 示例:中间人攻击、SQL 注入、文件修改、消息重放
- 缓解措施:HTTPS/TLS、输入验证、参数化查询、数字签名、校验和、不可变存储
R - 抵赖
- 威胁:用户否认执行过某项操作,且没有活动记录作为证明
- 示例:日志被删除、交易未签名、缺少审计跟踪
- 缓解措施:全面的审计日志、交易数字签名、防篡改日志、第三方时间戳
I - 信息泄露
- 威胁:敏感信息暴露给未经授权的对象
- 示例:数据库转储、错误消息过于详细、备份未加密、API 过度获取数据
- 缓解措施:加密静态存储和传输中的数据、访问控制、数据最小化、安全删除、在日志中编辑敏感信息
D - 拒绝服务
- 威胁:系统不可用或性能下降
- 示例:资源耗尽、分布式攻击、利用算法复杂度发起攻击、存储空间耗尽
- 缓解措施:速率限制、自动扩缩容、熔断器、输入大小限制、CDN/DDoS 防护
E - 权限提升
- 威胁:攻击者获得未经授权的访问权限
- 示例:通过 SQL 注入获得管理员权限、通过 IDOR 访问其他用户数据、路径遍历、权限提升漏洞
- 缓解措施:最小权限原则、输入验证、对每个请求执行授权检查、基于角色的访问控制
信任边界映射
信任边界:数据跨越不同信任级别的安全域的位置。
常见边界:
- 用户 → 应用程序:不可信输入进入系统(验证、清理、限制速率)
- 应用程序 → 数据库:应用程序凭据与用户权限(参数化查询、连接池)
- 内部 → 外部服务:数据离开你的控制范围(加密、审计日志、合同条款)
- 公共网络 → 专用网络:互联网连接内部系统(防火墙、VPN、API 网关)
- 客户端 → 服务端:JavaScript 连接后端(绝不信任客户端,在服务端重新验证)
- 特权代码 → 非特权代码:管理功能与用户代码(隔离、独立进程、安全边界)
边界分析问题:
- 哪些数据会跨越此边界?(对敏感度进行分类)
- 边界两侧分别是谁/什么?(身份验证、授权)
- 跨越边界时可能出现什么问题?(应用 STRIDE)
- 有哪些控制措施可保护此边界?(身份验证、加密、验证、速率限制)
常见模式
模式 1:使用数据库的 Web 应用程序
- 边界:用户 ↔ Web 服务器 ↔ 数据库
- 关键威胁:SQLi(篡改)、XSS(欺骗)、CSRF(欺骗)、会话劫持(欺骗)、IDOR(权限提升)
- 主要缓解措施:参数化查询、CSP 标头、CSRF 令牌、HttpOnly/Secure Cookie、授权检查
模式 2:使用第三方 OAuth 的 API
- 边界:用户 ↔ 前端 ↔ API 服务器 ↔ OAuth 提供商 ↔ 第三方 API
- 关键威胁:令牌窃取(欺骗)、权限范围扩大(权限提升)、授权码拦截、重定向 URI 操纵
- 主要缓解措施:为公共客户端使用 PKCE、验证 state 参数、轮换令牌、使用最小权限范围、仅使用 HTTPS
模式 3:微服务架构
- 边界:API 网关 ↔ 服务 A ↔ 服务 B ↔ 消息队列 ↔ 数据库
- 关键威胁:服务冒充(欺骗)、横向移动(权限提升)、消息篡改(篡改)、服务枚举(信息泄露)
- 主要缓解措施:服务间使用 mTLS、服务网格、对每个服务进行 API 身份验证、网络策略、遵循最小权限原则的 IAM
模式 4:文件上传服务
- 边界:用户 ↔ 上传处理程序 ↔ 病毒扫描器 ↔ 对象存储
- 关键威胁:上传恶意软件(篡改)、路径遍历(信息泄露)、文件覆盖(篡改)、存储耗尽(DoS)
- 主要缓解措施:验证文件类型(检查魔数而非扩展名)、限制文件大小、病毒扫描、使用唯一文件名、使用独立存储域
模式 5:使用后端 API 的移动应用
- 边界:移动应用 ↔ API 网关 ↔ 后端服务
- 关键威胁:提取 API 密钥(信息泄露)、绕过证书固定(篡改)、窃取本地数据(信息泄露)、逆向工程
- 主要缓解措施:证书固定、ProGuard/R8 混淆、生物识别身份验证、本地加密(Keychain/Keystore)、Root/越狱检测
防护原则
以假设已遭入侵为前提:
- 不要问“攻击者能否入侵?”,而要问“攻击者入侵后能造成多大损害?”
- 深度防御:设置多层相互重叠的控制措施,不留下单点故障
- 最小权限:默认仅授予最低权限,只有明确授权时才授予额外权限
务实地确定优先级:
- 优先保护高价值资产(客户数据、凭证、财务数据)
- 先处理合规性关键威胁(PCI、HIPAA),再考虑锦上添花的措施
- 平衡安全成本与风险(不要对低风险系统过度设计)
避免安全作秀:
- 安全作秀:看似安全,但并不能实质性降低风险的控制措施(例如,仅要求密码复杂度而不限制请求频率,仍会受到凭证填充攻击)
- 有效安全:针对实际威胁途径采取措施,并可衡量风险降低幅度
记录假设:
- “假设数据库无法从公网访问”(通过网络配置验证)
- “假设已强制使用 TLS 1.2+”(检查负载均衡器设置)
- “假设环境变量受到保护”(确认密钥管理措施)
更新威胁模型:
- 威胁模型会逐渐失效(新功能、新攻击技术、基础设施变更)
- 每季度审查一次,或在架构发生重大变更时审查
- 吸取事件和安全研究中的经验教训
快速参考
资源:
- 快速威胁建模:resources/template.md
- 高级技术:resources/methodology.md(攻击树、DREAD 评分、滥用场景)
- 质量评估标准:resources/evaluators/rubric_security_threat_model.json
5 步流程:梳理架构 → 确定边界 → 分类数据 → 应用 STRIDE → 缓解并监控
STRIDE:欺骗、篡改、抵赖、信息泄露、拒绝服务、权限提升
信任边界:用户→应用、应用→数据库、内部→外部、公网→私有网络、客户端→服务端、特权→非特权
缓解类型:预防性(阻止攻击)、检测性(发现攻击)、纠正性(应对攻击)
确定优先级:优先保护高价值资产,处理合规性关键威胁,并务实地权衡风险与成本