
AI 技能AI 插件应用安全网络安全AI 评测【免费下载链接】skillsTrail of Bits Claude Code skills for security research, vulnerability detection, and audit workflows项目地址https://gitcode.com/gh_mirrors/skills8/skills点击查看免费下载在安全审计中发现一个漏洞往往只是开始——同一根因通常会在代码库的其他位置以不同形态反复出现。variant-analysis插件五步变体狩猎流程的第一步就是 root-cause.md 所定义的根因提取与扩展轴策略把单个已知 Bug 转译成一句结构化的根因陈述再展开为若干条独立、互不重叠、且有代码依据的搜索方向。这篇文章完整拆解该策略的四个提取问题、四类扩展清单与三类常见陷阱并结合插件工作流 variants.js 的 Schema 约束与评测用例说明这套策略如何被自动化流程消费、以及它在真实代码库评测中被如何验证。变体为什么存在漏洞聚集的五个机制文档开宗明义漏洞之所以成簇出现是因为开发者会犯出一致性的错误。文档列举了五种聚集机制开发者习惯Developer habits同一个人写出相似的代码也犯下相似的错误复制粘贴传播Copy-paste propagation样板代码把 Bug 扩散到整个代码库API 误用模式API misuse patterns复杂的 API 会诱发出一致的误解框架惯用法Framework idioms框架模式造就了可预测的漏洞形态不完整的修复Incomplete fixes原始 Bug 只在一处被修别处被遗漏。理解为什么存在变体就能预测到哪里去找。文档给出两条典型的聚集预测复制粘贴型 Bug 聚集在兄弟文件里API 误用型 Bug 则聚集在该 API 的每一个调用点无论它们位于代码库何处。这个WHY 决定 WHERE的判断正是后续选择搜索工具与搜索范围的前提。提取根因四个前置问题与一句结构化陈述文档要求在写下任何搜索模式之前先回答四个问题什么操作是危险的eval()、system()、原始 SQL、一个授权检查什么数据让它变得危险用户可控输入、一个 null、攻击者选择的尺寸缺了什么净化、校验、边界检查、空值守卫什么上下文使它能成立认证状态、错误路径、某个特定调用方回答完四个问题后把根因写成固定句式本漏洞之所以存在是因为 [不可信数据] 在无 [所需防护] 的情况下到达了 [危险操作]。文档给出的三个示例用户输入在未经净化的情况下到达了eval()攻击者可控的尺寸在缺少溢出检查的情况下到达了malloc()不可信路径在未经规范化处理的情况下到达了open()这句陈述就是搜索模式本身——文档强调Everything below expands it后续所有扩展都是对这句话的展开。无数据流的逻辑漏洞用被违反的不变量替代对于没有数据流的逻辑 Bug无法套用数据到达危险操作的注入式模板文档要求改为陈述被违反的不变量这个函数必须对未认证调用方返回 False但当两个 ID 都为 null 时它返回了 True。这一分支并非可有可无的备注而是被评测体系专门守护的行为。评测用例 04-invariant-bug 的场景是一个 TOCTOU 竞态os.access(path, os.W_OK)检查之后open()中间状态可被攻击者改写。其评分器 root-cause-as-invariant.md 明确规定只有把根因定性为检查与使用之间的时间差、状态的不可保持、原子性缺失、路径身份在 check 与 use 之间可能变化才算通过如果仅将其框定为不可信数据到达危险操作的注入/污点形态即使表述流畅也判失败。这与文档对逻辑 Bug 陈述被违反的不变量的要求一一对应。扩展检查清单单一根因的四种显现单个根因会以多种方式显现。文档要求在搜索之前先枚举全部显现方式并给出四类检查清单。1. 语义相关的标识符如果 Bug 涉及某个名字那么所有扮演相同角色的名字都在范围内。文档举例isAuthenticated还有isActive、isAdmin、isVerified、isLoggedInuserId还有ownerId、creatorId、authorId同时文档要求这些标识符必须落在代码库实地先 grep 验证它们存在再列入清单。一份看似合理但实际不存在的标识符列表会白白浪费一整个搜索轴——这一点在后文无据轴陷阱中还会再次强调。2. 其他布尔逻辑错误同样的错误以不同形状出现条件反转本意是if x却写成if not x错误的默认返回值fall-through 路径上return True短路求值错误本意是and却写成or3. 数据类型边界情况Null/None/undefined 的比较尤其是两侧都可能为 null的场景空字符串 vs null零值 vs null空数组与空集合第 3 类与 triage.md 中的null 相等性绕过None None is True导致匿名用户通过order.owner_id current_user.id的授权检查互为呼应扩展阶段负责把它们列入搜索方向分诊阶段负责验证它们是否真的可利用。4. 文档/代码不一致函数的行为与它自己的名字或 docstring 相矛盾。文档给出的操作方法是搜索以deny、restrict、block、forbid、check、validate命名的函数然后确认返回值是否名副其实。这类问题在 triage.md 中有典型样本名为check_restricted_permission、docstring 声称应拒绝时返回 True实际却对有权限的用户返回 True——此类函数的每一个调用点都是潜在发现点。什么才算一条合格的扩展轴文档指出一个关键工程约束每条轴会被交给一个对其他轴一无所知的独立 agent 执行对应 variants.js 中每个轴一个 sweep agent 的并行设计。因此一条轴必须同时满足三个标准可独立搜索Independently searchable它指明具体要找的标识符或代码结构而不是授权问题这类主题词互不重叠Non-overlapping两条轴找到同一段代码等于浪费一个 agent有依据Grounded它的线索必须真实存在于当前代码库。这三个标准在自动化工作流中被编码为硬性 Schema。variants.js 第 127–170 行的ROOT_CAUSE_SCHEMA规定根因阶段必须产出一句statement明确限定为[UNTRUSTED DATA] reaches [DANGEROUS OPERATION] without [REQUIRED PROTECTION]句式逻辑 Bug 则陈述被违反的不变量——与文档完全一致、一个exact_patternLevel 0 的 ripgrep ERE 精确匹配模式、以及一组axes第 152–168 行数量被限制在3 到 12 条之间每条轴必须声明kind枚举值identifier/manifestation/edge-case恰好对应文档检查清单的前三类显现并给出hints——具体的标识符、调用形状或代码结构。也就是说文档中轴必须指名道姓的文字要求在这里变成了 JSON Schema 的必填字段。本阶段的三个典型陷阱文档在结尾集中列出三个陷阱每一个都有明确的诊断逻辑模式过窄Pattern too specific。只用原始 Bug 中的确切属性做搜索会漏掉建立在相关构造上的变体。正确做法是枚举整个家族而不是单个实例。单一漏洞类别Single vulnerability class。只追一种显现方式会漏掉其余形态。文档给出的例子一个条件为假时返回 allow的 Bug同时会伪装成 null 相等性绕过、文档/代码不一致、反转条件等形式——必须在搜索前列出全部显现方式。无据轴Ungrounded axes。听起来合理但代码库里根本不存在的标识符只会产出一个搜得很努力但一无所获的 agent。前两个陷阱在 SKILL.md 的变体狩猎为何失败一节中被再次归纳模式过窄单一漏洞类别位列失败原因之二、三第三个则由 Schema 的Grounded语义与 baseline 门禁兜底。评测设计也刻意针对这些陷阱evals/README.md 说明用例 01 与 03 的构造方式是让字面匹配、不做泛化的跑法得分非零但错误——它能找到与种子共享同一 sink API 的候选却漏掉需要泛化到根因的候选这正是单一显现失败模式最锋利的信号。根因陈述如何驱动下游工作流视角的纵深佐证root-cause.md不是孤立的知识文档它是 SKILL.md 定义的五步流程中第 1 步的策略引用且下游一切都以你在此产出的内容为校准基准浅层的根因会封顶整次狩猎的质量。在 variants.js 工作流中可以看到这条链路的具体实现Phase 1Root cause第 251–266 行派发一个 agent指令明确要求先读取skill_dir/references/root-cause.md并遵循它然后阅读真实漏洞代码产出根因陈述、精确匹配 ERE 与扩展轴。注意第 263–264 行特别限定exact_pattern必须是POSIX 扩展正则ERE而非 PCRE——这是为了与 baseline 阶段实际执行的rg命令语法保持一致。Phase 2Baseline 门禁第 287–323 行执行校准门禁直接运行rg -n --no-heading exact_pattern root若匹配数为 0或匹配结果中不包含已知漏洞行matches_origin为 false工作流立即抛错终止。这正对应 SKILL.md 第 2 步写一个只匹配已知实例的模式并确认它命中——根因提取阶段产出的陈述若脱离实际代码会在门禁处被拦下而不是让整次扫描建立在错误的校准点上。Phase 3–4Sweep/Triage扩展轴在此被逐条消费。第 370–374 行采用轮转切片策略跨轮次轮换轴默认每轮最多 6 条小代码库降级为 2 条单轮见第 330–338 行的 40 文件阈值逻辑每条轴派发的 sweep agent 只能看到Your axis, and only this axis——这正是文档每条轴交给不知道其他轴的 agent这一设计约束的执行面。第 404 行注入的Concrete leads: ${axis.hints.join(, )}则对应文档要求轴必须携带的具体线索。报告从未被扫过的轴会被显式记录第 495–505 行的unsweptAxes并强制写入报告的独立小节——我们根本没看过必须出现在产物里而不能只存在于运行日志。根因泛化的实证跨 sink API 的变体tests/ground-truth.json 记录了真实代码库Gradio钉在特定 commit 上的评测基准种子 Bug 是processing_utils.py:1110中把上传视频路径与调用方时间戳拼进 ffmpeg 命令并以shellTrue执行的命令注入而评分要求发现的第二个漏洞位于flagging.py:351的os.system(ftar czf ...)——同一根因、不同的 sink API、不同的模块。ground-truth 中的注释一针见血grep 种子的精确 sinksubprocess.run/shellTrue到不了它——必须泛化到用户数据到达 shell。这就是文档枚举整个家族而不是单个实例的直接实证只匹配种子实例的模式召回了 1/2按根因展开的轴才召回全部。策略落地的实操要点结合文档与仓库证据落地这套根因策略时的操作要点可以归纳为先陈述后搜索写任何 grep/CodeQL/Semgrep 模式之前先产出四问答案和那句结构化陈述逻辑 Bug 改用被违反的不变量表述。先 grep 标识符再列轴清单中的每个相关名字都要在代码库中验证存在否则删掉轴的数量控制在 3–12 条并标注类型标识符 / 显现方式 / 边界情况。精确模式必须命中已知实例Level 0 模式连已知漏洞行都匹配不上时说明对 Bug 的理解有误应回退修正而不是继续往下走工作流的 baseline 门禁会把这一步变成硬性失败。轴之间去重两条轴若指向同一批代码合并之每条轴的 hints 必须指名具体标识符或代码构造。负向结论也是结论即便全部候选被排除reporting.md 要求照常写出记录搜索过程的报告方法与失败模式一并存档。小结root-cause.md的核心贡献是把找到其他同类 Bug这个直觉动作压缩为三个可执行的工件一句根因陈述数据流 Bug 用不可信数据 危险操作 缺失防护句式逻辑 Bug 用被违反的不变量、四份枚举完显现方式的检查清单、以及一组满足可独立搜索 / 互不重叠 / 有依据三标准的扩展轴。variants.js 的 Schema 与门禁把这三项从建议升级为契约evals/04-invariant-bug 与 tests/ground-truth.json 则分别从逻辑 Bug 不得误框定为注入和必须跨 sink API 泛化两个方向守护该策略的执行质量。理解了这一阶段后续 searching.md 的抽象阶梯与 triage.md 的分诊标准也就有了校准基准。赞分享AI 技能AI 插件应用安全网络安全AI 评测【免费下载链接】skillsTrail of Bits Claude Code skills for security research, vulnerability detection, and audit workflows项目地址https://gitcode.com/gh_mirrors/skills8/skills点击查看免费下载相关推荐Trail of Bits skills 的 Variant Analysis从一个已知漏洞到全库同类漏洞的系统化搜索Trail of Bits skills 的 Variant Analysis从一个已知漏洞到全库同类漏洞的系统化搜索 本文基于 plugins/varianAI 技能AI 插件应用安全网络安全AI 评测Harbor 中普通用户拉取已扫描镜像Trivy 扫描与漏洞阻断策略实战解析Harbor 中普通用户拉取已扫描镜像Trivy 扫描与漏洞阻断策略实战解析 导读 本文以 Harbor 仓库测试用例 10 09 User can pull后端云原生镜像仓库Trail of Bits Skills 仓库 Variant Analysis 技能实战五步法猎取已知漏洞的全仓变体族Trail of Bits Skills 仓库 Variant Analysis 技能实战五步法猎取已知漏洞的全仓变体族 variant analysis变AI 技能AI 插件应用安全网络安全AI 评测上一篇ELF文件深度剖析BinExp项目带你理解二进制可执行文件的内存结构下一篇NeatLogic ITOM平台完整部署与实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考