创新方案
为代码库构建威胁模型:在无已知漏洞时梳理攻击面与风险优先级
当你需要为某个代码库做威胁建模、梳理攻击面或评估「应该担心什么」时,按是否有系统负责人和代码库选择 interview / bootstrap / bootstrap-then-interview 三种模式,输出统一的 THREAT_MODEL.md。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
为代码库构建威胁模型:在无已知漏洞时梳理通用
解决思路
- 先执行安全前置声明:确认目标目录存在且是可读的本地检出;声明不会执行目标目录中的任何代码;若 --vulns 指向 URL 或被要求「获取 CVE」,只查询公开公告库(NVD、GitHub Security Advisories、项目自身 issue tracker),绝不访问目标的线上部署。若用户要求运行漏洞利用来验证威胁,拒绝并引导其使用 vuln-pipeline。
- 解析 $ARGUMENTS 的第一个 token 进行路由:interview → 读取本目录的 interview.md 并遵循;bootstrap → 读取 bootstrap.md 并遵循;bootstrap-then-interview → 先 bootstrap 再以草稿为种子做 interview;其他或为空 → 询问用户「是否有拥有或构建该系统的人可在本次会话中回答问题」,有负责人且有代码库则推荐 bootstrap-then-interview,有负责人但无代码库则用 interview.md,无负责人则用 bootstrap.md。
- 保持上下文持久性:不要一开始就完整读取 interview.md 或 bootstrap.md,而是在需要时按一个问题或一个阶段逐段读取;若 Read 工具因「file unchanged」被拒绝,说明先前结果已被驱逐,改用 Bash 的 cat <path> 重新加载。
- interview 模式按四问框架推进:Q1 我们在做什么(填 schema 第 1 节上下文、第 2 节资产、第 3 节入口点);Q2 会出什么问题(填第 4 节威胁行:id、threat、actor、surface、asset);Q3 我们打算怎么办(填第 4 节 impact/likelihood/status/controls、第 5 节降级项、第 8 节建议缓解措施);Q4 我们做得好吗(校验排序、覆盖检查、第 6 节开放问题)。
- bootstrap 模式按五阶段推进:并行研究蜂群 → 综合第 1-3 节与漏洞表 → 把漏洞泛化为威胁类别 → 用 STRIDE 补全缺口 → 输出。
- bootstrap-then-interview 模式:先告知负责人「我会先读代码并带回草稿(约 5-10 分钟),然后我们一起过一遍。要这样,还是宁愿从零开始?」仅在对方同意后继续,否则回退到 interview.md;随后完整执行 bootstrap.md 并写出 <target-dir>/THREAT_MODEL.md;紧接着进入 interview 模式,以 --seed <target-dir>/THREAT_MODEL.md 生效,把 bootstrap 的第 6 节开放问题作为 Q1-Q4 的提示,让负责人确认、纠正、补充;最后用精炼后的模型覆盖 <target-dir>/THREAT_MODEL.md,并将 provenance 设为 mode: bootstrap-then-interview。
- 也可手动执行同一流程:先跑 bootstrap,之后在另一个会话中跑 interview --seed <THREAT_MODEL.md>。
- 所有模式必须输出符合 schema.md 的 <target-dir>/THREAT_MODEL.md;在写文件前立即读取 schema.md(不要在路由时读,interview 模式下路由到输出之间可能隔很多轮,早读会被驱逐)。
- 写文件后向用户打印:THREAT_MODEL.md 的路径;按 likelihood × impact 排序的前 5 个威胁(id、一行描述、L×I);bootstrap 模式下代码无法回答的开放问题(用于后续 interview 的种子);interview 模式下无法在代码中验证的负责人陈述(用于后续代码审查的种子)。
- 用试金石区分威胁与漏洞:若修补一行代码就能让某条目消失,那它是漏洞而非威胁;威胁(如「攻击者通过解析不可信媒体实现 RCE」)在所有已知 bug 修复后依然成立,漏洞(如「dr_wav.h:412 未对 chunk_size 做边界检查」)则不成立。本技能产出威胁,漏洞仅作为提升威胁 likelihood 评分的证据。
- 所有模式写入同一产物 THREAT_MODEL.md(schema 见 schema.md),使下游消费者(pipeline 的 recon/judge、verifier agents)无需知道是哪种模式产出的。
- 为各模式打上 provenance 标签:interview 模式标 interview,bootstrap 模式标 bootstrap。
- 参考 docs/security.md 与 docs/prompting.md,继承其中的 engagement-context 与授权框架。
适用边界 · 注意事项
- 不要执行目标目录中的任何代码,本技能只做静态分析,不构建、不运行、不 fuzz、不修改目标,也不对目标基础设施发起网络请求。
- 不要为验证威胁而运行漏洞利用;应改用 vuln-pipeline。
- 不要在路由阶段就读取 schema.md 或完整读取模式文件,以免结果在需要前被驱逐。