SuperAPI AI 工具集

fp-check

安全与审计

查看项目

更新于 10-16 23:14

技能介绍

用途

fp-check 是一个用于安全缺陷分析的系统化误报验证技能,帮助判断一个具体的疑似漏洞是否真实存在、是否为误报、是否可被利用,或对某一发现进行验证与确认。它适用于“这个 bug 是真的吗?”“这是真阳性吗?”“这是误报吗?”“验证这个发现”“检查这个漏洞是否可被利用”等请求。

该技能明确不适用于:寻找或狩猎漏洞(如“find bugs”“security analysis”“audit code”)、针对风格、性能或可维护性的通用代码审查、功能开发、重构等非安全任务,或用户明确要求不做验证的快速扫描场景。

核心方法

第 0 步:理解声明与上下文

在开始任何分析之前,需要用自己的话复述该漏洞。如果无法清晰复述,应通过 AskUserQuestion 向用户请求澄清。资料指出,许多误报在这一步就会瓦解,因为当声明被精确复述时可能并不连贯。需要记录的内容包括:确切的漏洞声明、所谓的根本原因、假定的触发条件、声称的影响、威胁模型(代码运行的权限级别、是否沙箱化、攻击者在触发前已能做什么)、漏洞类别、执行上下文、调用方分析、架构上下文,以及历史上下文。漏洞类别确定后,可查阅 bug-class-verification.md 获取该类别的验证要求,以补充后续通用阶段。

验证路径:标准验证与深度验证

完成第 0 步后,需要选择一条验证路径。

标准验证适用于以下条件全部成立时:漏洞声明清晰且具体、单组件(漏洞路径中没有跨组件交互)、漏洞类别易于理解(如缓冲区溢出、SQL 注入、XSS、整数溢出等)、触发条件不涉及并发或异步、从 source 到 sink 的数据流直接明了。该路径遵循 standard-verification.md,不创建任务,按线性清单推进并内联记录发现。

深度验证适用于以下任一条件成立时:声明含糊、可作多种解释;漏洞路径跨组件(数据流经 3 个及以上模块或服务);触发机制涉及竞态条件、TOCTOU 或并发;逻辑缺陷没有明确规范可供核对;标准验证无定论或已升级;用户明确要求完整验证。该路径遵循 deep-verification.md,需创建完整的任务依赖图,并使用插件中的 agents 执行各阶段。

默认从标准验证开始。标准验证内置两个升级检查点,当复杂度超出线性清单时路由至深度验证。

需要拒绝的合理化借口

技能要求在执行过程中识别并停止以下想法:

  • “快速分析剩余漏洞”——错误,每个漏洞都应获得完整验证,应回到任务列表,通过所有阶段验证下一个漏洞。
  • “这个模式看起来危险,所以是漏洞”——错误,模式识别不等于分析,在得出结论前必须完成数据流追踪。
  • “为效率跳过完整验证”——错误,不允许部分分析,应按所选验证路径执行所有步骤。
  • “代码看起来不安全,不追踪数据流就上报”——错误,看似不安全的代码可能有上游校验,必须追踪从 source 到 sink 的完整路径。
  • “类似代码在别处有漏洞”——错误,每个上下文的校验、调用方和保护措施不同,应独立验证这一具体实例。
  • “这显然是严重漏洞”——错误,LLM 有偏向于看到漏洞并高估严重性的倾向,应完成“魔鬼代言人”式评审并用证据证明。

批量研判

当需要一次性验证多个漏洞时:首先对所有漏洞执行第 0 步,复述每个声明往往能立即瓦解明显的误报;随后独立路由每个漏洞(有些可能是标准,另一些可能是深度);先处理所有标准路径漏洞,再处理深度路径漏洞;所有漏洞验证完成后,检查是否存在利用链——即单独看未通过门禁评审的发现可能组合成可行攻击的情况。

最终总结

处理完所有疑似漏洞后,需要提供:数量统计(X 个真阳性、Y 个误报);真阳性列表,每项附简要漏洞描述;误报列表,每项附简要拒绝原因。

参考资料

  • Standard Verification:针对简单漏洞的线性单次检查清单。
  • Deep Verification:针对复杂漏洞的完整任务编排。
  • Gate Reviews:六个强制门禁及裁决格式。
  • Bug-Class Verification:针对内存破坏、逻辑缺陷、竞态条件、整数问题、密码学、注入、信息泄露、DoS 与反序列化的类别特定验证要求。
  • False Positive Patterns:13 项检查清单及常见误报模式的红旗标志。
  • Evidence Templates:数据流、数学证明、攻击者控制与魔鬼代言人评审的文档模板。

来源与许可

该技能引用了上游文档 trailofbits/skills/plugins/fp-check/skills/fp-check/SKILL.md,修订版本为 5c15f4f5644b4bd3d48882a802a7232d501852b6,归属 Trail of Bits,许可协议为 CC-BY-SA-4.0。

引用文档

以下为作者声明的引用来源,保留指定版本、署名和许可。

作者的来源声明