mcpField
F
fp-check

fp-check

github.com/waybarrios安全54646 次安装2 天前更新
代码仓库

关于 fp-check

用于核实具体疑似漏洞是真实问题还是误报的安全技能。它引导分析者澄清漏洞主张、追踪数据流,并选择标准或深入验证,最后汇总结论和证据。

主要功能

  1. 01澄清漏洞主张及上下文
  2. 02追踪从来源到汇点的数据流
  3. 03选择标准或深入验证流程
  4. 04批量分流问题并检查利用链
  5. 05汇总真实问题和误报

适用场景

  1. 01在报告前验证疑似漏洞
  2. 02评估已报告的问题是否可利用
  3. 03分流多个疑似漏洞并评估可能的利用链

安装

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

$npx skills add https://github.com/waybarrios/opencode-power-pack --skill fp-check

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

包含的文件

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

references/
bug-class-verification.md
deep-verification.md
evidence-templates.md
false-positive-patterns.md
gate-reviews.md
standard-verification.md

详细介绍

误报检查

适用情况

  • “这个漏洞是真的吗?”或“这是真阳性吗?”
  • “这是误报吗?”或“验证一下这个发现”
  • “检查这个漏洞是否可利用”
  • 任何要求验证或确认某个具体疑似漏洞的请求

不适用情况

  • 查找或搜寻漏洞(“查找漏洞”“安全分析”“审计代码”)
  • 针对风格、性能或可维护性的一般代码审查
  • 功能开发、重构或非安全相关任务
  • 用户明确要求快速扫描,不需要验证

应拒绝的自我开脱

如果你发现自己在想以下任何一种说法,立即停止。

自我开脱错误原因必须采取的行动
“快速分析剩余漏洞”每个漏洞都必须经过完整验证返回任务列表,按照所有阶段验证下一个漏洞
“这种模式看起来很危险,所以它是个漏洞”模式识别不等于分析得出结论前,完成数据流追踪
“为了提高效率,跳过完整验证”不允许部分分析按照所选验证路径执行所有步骤
“代码看起来不安全,不追踪数据流就直接报告”看起来不安全的代码可能在上游经过了验证追踪从源到汇的完整路径
“类似代码在别处存在漏洞”每种情况的验证、调用方和防护措施都不同独立验证这个具体实例
“这显然是严重漏洞”LLM 容易倾向于发现漏洞并高估严重性完成反方审查,并用证据证明

步骤 0:理解漏洞主张和上下文

开始分析前,用自己的话重述漏洞。如果无法清楚地做到这一点,请向用户澄清。误报中有一半会在这一步消失——精确重述后,漏洞主张往往缺乏逻辑。

记录:

  • 具体的漏洞主张是什么?(例如,“当 content_length 超过 4096 时,parse_header() 中发生堆缓冲区溢出”)
  • 据称的根本原因是什么?(例如,“第 142 行 memcpy 前缺少边界检查”)
  • 据称的触发方式是什么?(例如,“攻击者发送带有超大 Content-Length 标头的 HTTP 请求”)
  • 声称的影响是什么?(例如,“通过受控堆损坏实现远程代码执行”)
  • 威胁模型是什么? 这段代码以什么权限级别运行?是否在沙箱中?触发这个漏洞前,攻击者已经能做什么?(例如,“未经身份验证的远程攻击者与具有特权的本地用户”;“运行在 Chrome 渲染器沙箱内”与“以 root 身份运行且没有沙箱”)
  • 漏洞类别是什么? 对漏洞分类,并查阅 bug-class-verification.md,了解可补充以下通用阶段的特定类别验证要求。
  • 执行上下文:正常执行期间,何时以及如何进入这条代码路径?
  • 调用方分析:哪些函数会调用这段代码?它们对输入施加了哪些限制?
  • 架构上下文:这是否属于具有多层防护措施的更大安全系统?
  • 历史上下文:此代码区域近期是否有改动、已知问题或先前的安全审查?

路径:标准验证或深入验证

完成步骤 0 后,选择一条验证路径。

标准验证

以下条件全部满足时使用:

  • 漏洞主张清晰且具体(不含糊或模棱两可)
  • 涉及单个组件,漏洞路径中没有跨组件交互
  • 漏洞类别明确且易于理解(缓冲区溢出、SQL 注入、XSS、整数溢出等)
  • 触发过程中不涉及并发或异步操作
  • 从源到汇的数据流简单明了

遵循 standard-verification.md。无需创建任务——按照线性检查清单逐项进行,并在过程中记录发现。

深度验证

符合以下任一条件时使用:

  • 存在可能有多种解读的模糊说法
  • 跨组件 Bug 路径(数据流经 3 个或更多模块或服务)
  • 触发机制中存在竞态条件、TOCTOU 或并发问题
  • 缺少明确规范可供核验的逻辑 Bug
  • 标准验证未能得出结论或已升级处理
  • 用户明确要求完整验证

遵循 deep-verification.md。将工作拆分为完整的任务依赖图,并按阶段有条不紊地执行;如果宿主环境支持,则委派给子 Agent。

默认方式

从标准验证开始。标准验证内置了两个升级检查点,当复杂度超出线性检查清单的范围时,会转入深度验证。

批量分诊

同时验证多个 Bug 时:

  1. 先对所有 Bug 执行步骤 0——重述每项说法通常就能立即排除明显的误报
  2. 分别为每个 Bug 选择验证路径(有些走标准验证,有些走深度验证)
  3. 先处理所有分流到标准验证的 Bug,再处理分流到深度验证的 Bug
  4. 验证完所有 Bug 后,检查是否存在漏洞利用链——单独来看未通过门槛审查的发现,组合后可能形成可行攻击

最终摘要

处理完所有疑似 Bug 后,提供:

  1. 计数:X 个真阳性,Y 个假阳性
  2. 真阳性列表:简要说明每项漏洞
  3. 假阳性列表:简要说明排除原因

参考资料

评论

支持 Markdown