关于 threat-modeling
用于安全规划阶段的威胁建模技能,帮助安全团队在测试前梳理资产、入口和信任边界。它按 STRIDE 识别威胁,并依可能性与影响排序,输出供后续审计和渗透测试使用的目标清单。
主要功能
- 01盘点资产与输入入口
- 02梳理信任边界
- 03按 STRIDE 分析威胁
- 04按可能性与影响评估风险
- 05生成优先测试目标清单
适用场景
- 01为安全测试确定优先顺序
- 02发现 API 与内部入口的威胁
- 03为代码审计整理风险目标
- 04识别缺少专门测试覆盖的攻击面
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mn-youssef/ security-skills --skill threat-modeling安装后在 Claude Code 中输入/threat-modeling确认已加载。
附带文件references/stride-and-surface.md
详细介绍
威胁建模(PLAN 阶段)
概述
在投入精力前,先决定最需要担忧和测试的内容。梳理资产、入口点和信任边界;应用 STRIDE;按可能性 × 影响程度对风险排序。
核心原则: 无法测试所有内容。应把精力花在故障造成的损害最大的地方。
流程
- 盘点资产 — 什么最有价值?(用户数据、资金、凭据、PII、管理员控制权、IP)
- 梳理入口点 — 所有不可信输入进入的位置:路由/端点、表单、文件上传、查询参数、标头、Webhook、消息队列、移动端 API 调用、第三方回调。
- 划分信任边界 — 数据在哪里从较低信任级别跨越到较高信任级别?(浏览器→API、API→DB、服务→服务、用户→管理员)。缺陷往往集中在这些边界上。
- 对每个边界/组件应用 STRIDE — 参见
references/stride-and-surface.md。 - 排序 — 为每项威胁评分:
risk = likelihood × impact(每项取 1–3 → 总分 1–9)。优先测试高分项。
快速参考 — STRIDE
| 威胁 | 问题 | 防护目标 |
|---|---|---|
| Spoofing(欺骗) | 有人能冒充其他用户/服务吗? | 身份验证 |
| Tampering(篡改) | 数据在传输中/静态存储时能被修改吗? | 完整性 |
| Repudiation(抵赖) | 操作能被否认吗/有日志记录吗? | 不可否认性 |
| Information disclosure(信息泄露) | 数据会泄露吗? | 机密性 |
| Denial of service(拒绝服务) | 服务会变得不可用吗? | 可用性 |
| Elevation of privilege(权限提升) | 用户能获得不应拥有的权限吗? | 授权 |
输出:按优先级排列的目标清单
供后续阶段使用的表格:
| # | 资产 | 入口点 | STRIDE | 可能性 | 影响 | 风险 | 测试方式 |
|---|---|---|---|---|---|---|---|
| 1 | 用户 PII | GET /api/users/:id | I (IDOR) | 3 | 3 | 9 | 代码审计 + 主动渗透测试 |
| 2 | 身份验证 | POST /login | S | 2 | 3 | 6 | 代码审计 |
交接
将优先级最高的项目交给 security-code-audit(发现问题)和 active-pentest(验证)。
攻击面清单也是适用性判断依据。 它会告诉 security-testing 编排器哪些专用技能适用(存在对应攻击面 → 运行),哪些应跳过(不存在 → N/A),并指出没有任何匹配专用技能的攻击面,以便将其作为覆盖缺口通过通用方法处理,并建议创建新技能。请列出发现的每一个攻击面——包括当前没有任何技能覆盖的攻击面——避免遗漏任何内容。
常见错误
- 只建模正常路径——攻击者会利用非正常路径。
- 忘记内部/可信入口(管理面板、内部 API、cron、队列)。
- 把所有发现都视为同等重要——应进行排序,否则低价值工作会让你应接不暇。
评论
支持 Markdown