Threat Patch 是一个安全修复类技能,核心用途是读取安全发现并产出最小化、外科手术式的代码补丁,同时附带结构化文档。每个补丁都基于代码定位,针对发现中明确指出的具体文件和函数。输出内容包括摘要、验证步骤以及代码变更本身。
适用场景
当用户提供 findings.json(来自 threat-model)并希望修复时;当用户提供 Codex 安全发现 CSV 并希望修复时;当用户拥有 THREAT-MODEL.md 并希望修复其中识别的风险时;当用户描述某个具体漏洞并希望获得补丁时;当审查安全扫描器输出并需要可执行的修复时;当安全审计后需要把发现转化为代码变更时。
输入来源(按优先级)
findings.json(来自 threat-model):提供带数据流追踪、系统性分组、利用链和严重性评级的结构化发现。直接读取即可——这是最丰富的输入,已完成分类和分组。
Codex CSV:每条发现包含标题、描述、严重性和 relevant_paths。运行 scripts/parse-findings.sh <csv-path> 提取结构化输出。
THREAT-MODEL.md:人类可读的威胁模型。从 Criticality Calibration 部分提取发现。
内联描述:用户描述某个具体漏洞,从对话上下文中解析。
当 findings.json 可用时,它是首选输入——它包含数据流追踪(入口 → 链路 → 汇聚点),可直接指导修复位置;还包含系统性分组,提示应做集中式修复而非逐个补丁。
工作流概览
- 摄取发现 → 读取 findings.json / CSV / 描述
- 分类与分组 → 按严重性排序,若有系统性分组则使用
- 对每条发现: a. 阅读代码 → 打开 relevant_paths,理解模式 b. 确认 → 验证问题在 HEAD 中仍然存在 c. 设计修复 → 确定最小修复方案 d. 实现 → 编写代码变更 e. 文档化 → 摘要 + 验证 + 攻击路径(如需要) f. 测试 → 运行相关测试
- 输出 → 每个补丁交付物含摘要与 diff
- 更新状态 → 在 findings.json 中标记已修补的发现(如存在)
使用方式
阅读 workflow 了解每个步骤的详细修补方法论;设计修复时阅读 fix patterns,了解按漏洞类别划分的常见模式;文档化时阅读 output format,了解每个补丁的文档模板。如果输入是 findings.json,直接读取——它已经是结构化的;如果输入是 Codex CSV,运行 scripts/parse-findings.sh <csv-path> 提取结构化输出。
关键原则
最小 diff:修复漏洞,不要重构周边代码。最小的正确补丁就是最好的补丁。
集中优于重复:当多条代码路径共享同一漏洞模式时,提取共享辅助函数,而不是逐个位置独立修补。
显式错误路径:为被拒绝的输入添加具体错误类型,并给出清晰的操作员反馈,而不是静默失败或通用错误。
修复前确认:始终验证发现是否仍在 HEAD 中存在——自发现被检测以来,代码可能已移动或被重构。
编辑前需用户批准:先呈现修复设计(要改的文件、方法),等待批准后再修改源代码。Hooks 会拦截 Edit/Write 工具调用以提供额外安全。
即使失败也要记录:当因环境限制无法测试修复时,记录测试命令和该限制。
防护措施
该技能会修改源代码。安全措施包括:Edit 和 Write 工具上的 PreToolUse hooks 会在每次文件变更前提示确认;工作流中在修复设计与实现之间有确认关卡;回退路径:无提交(默认)时使用 git checkout -- <files> 撤销,有提交时使用 git revert。
输出模式
代码补丁——当修复已实现时:确认内容摘要与修复作用说明;含构建/测试命令的测试部分;实际代码变更。
仅分析——当修复需要用户决策或架构变更时:确认内容摘要;验证清单;攻击路径分析(路径、可能性、影响、假设、控制措施、盲点)。
参考资料
references/workflow.md:开始前阅读——每个修补阶段的详细方法。 references/fix-patterns.md:设计修复时阅读——按漏洞类别划分的模式。 references/output-format.md:文档化时阅读——两种输出模式的模板。