mcpField
V
variant-analysis

variant-analysis

github.com/trailofbits安全7.9k6.6k 次安装今天更新
代码仓库

关于 variant-analysis

用于在不同代码路径中寻找已知 Bug 其他实例的安全 Skill。它引导研究人员校准匹配模式、逐步泛化、分诊候选结果并编写报告,也提供并行搜索工作流。

主要功能

  1. 01提取根因及变体方向
  2. 02用已知 Bug 校准匹配模式
  3. 03逐次泛化搜索条件
  4. 04分诊候选问题
  5. 05生成报告与 CI 规则

适用场景

  1. 01发现漏洞后搜索其变体
  2. 02构建或改进 CodeQL、Semgrep 查询
  3. 03围绕已知根因系统审计代码

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/trailofbits/skills --skill variant-analysis

安装后在 Claude Code 中输入/variant-analysis确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

agents/
openai.yaml
assets/
trail-of-bits-mark.svg
references/
reporting.md
root-cause.md
searching.md
triage.md
resources/
variant-report-template.md
resources/codeql/
cpp.ql
go.ql
java.ql
javascript.ql
python.ql
resources/semgrep/
cpp.yaml
go.yaml
java.yaml
javascript.yaml
python.yaml

详细介绍

变体分析

查找已发现漏洞的其他实例。一个根本原因通常会有多种表现形式,而且这些问题很少出现在最初发现问题的模块中。

适用场景

  • 已发现漏洞,需要搜索类似实例
  • 构建或优化用于检测安全模式的 CodeQL/Semgrep 查询
  • 初步发现问题后,开展系统性代码审计
  • 分析同一个根本原因如何在不同代码路径中表现

不适用场景

  • 初步发现漏洞——请使用 audit-context-building 或特定领域的审计
  • 没有已知模式需要搜索的一般代码审查
  • 编写修复建议——请使用 issue-writer
  • 理解不熟悉的代码——请先使用 audit-context-building

五个步骤

进行到某一步时,请阅读该步骤的参考文档。

1. 理解原始问题。 提取根本原因——代码为何出错,而非代码做了什么——并列出变体可能隐藏的方向:相关标识符、同一错误的其他表现形式、数据类型边界情况。 → references/root-cause.md

2. 创建精确匹配。 编写一个只匹配已知实例的模式,并确认它能命中。模式若一个结果都匹配不到,说明你误解了漏洞,而基于它构建的所有搜索都会以错误代码为基准进行校准。

3–4. 每次只推广一个元素。 从精确匹配逐步扩展到模式族,每次只做一处更改,然后运行搜索并查看所有匹配结果。当噪声超过一半时停止。 → references/searching.md — 抽象阶梯、工具选择、误报过滤

5. 分类判断。 判断哪些候选项是真实问题,并标注严重性。 → references/triage.md

然后撰写报告,包含未奏效的模式以及防止问题回归的 CI 规则。 → references/reporting.md

作为工作流运行

此插件提供 /variant-analysis:variants,它会通过并行子 Agent 执行这五个步骤——每个扩展方向对应一个子 Agent,并持续循环,直到搜索不再发现新问题。每个阶段都会阅读与其任务对应的上述参考文档。

当代码库较大或根本原因有多种表现形式时,请使用此工作流。如果搜索范围较窄,或你希望逐步参与每次推广,则直接执行这些步骤。

导致搜索失败的原因

  1. 范围过窄——只搜索原始漏洞所在的模块
  2. 模式过于具体——只搜索某个属性,遗漏周边的模式族
  3. 只关注一种漏洞类型——追查根本原因的一种表现形式
  4. 只测试理想路径——从不尝试 null、空值和边界情况
  5. 推广过快——一次抽象多个元素,导致无法判断噪声究竟由哪一个元素引起

前三项在 root-cause.md 和 searching.md 中介绍,第四项在 triage.md 中介绍。

资源

CodeQL (resources/codeql/):python.ql、javascript.ql、java.ql、go.ql、cpp.ql

Semgrep (resources/semgrep/):python.yaml、javascript.yaml、java.yaml、go.yaml、cpp.yaml

报告:resources/variant-report-template.md

评论

支持 Markdown