Agentic AI 安全扫描器,能够像攻击者一样对源代码进行推理,通过可执行的 PoC 确认可利用漏洞,并通过 hunt、fix 和 verify 技能推动测试优先的修复。
[!NOTE] 一个持续维护的分支,源自 Capital One 的 VulnHunter(Apache-2.0)——旨在 运行于任何 agent harness,而不仅仅是 Claude Code。本分支的重点: harness 可移植性、沙箱化(容器化)漏洞利用验证, 以及可量化影响的 PoC。参见 为何做出这些更改 · 本分支更改了什么 · 数据。
从模式匹配到可证明性。
VulnHunter 是一款开源的 agentic AI 安全工具,将主动的、攻击者优先的分析直接应用于源代码。
与传统的被动式 SAST 扫描器不同——它们标记可疑模式并常常产生误报——VulnHunter 像对手一样思考。它识别哪些缺陷实际可被利用,绘制潜在攻击路径,并提出有针对性的、有证据支撑的修复方案。
现代软件供应链深度互联。一个被广泛使用的开源组件中的单一漏洞,可能同时波及数千家企业。
VulnHunter 由 Capital One 内部开发并向社区开源。本分支将这项工作延续下去——相同的方法论,经过重构以运行于任何 agent harness,并以沙箱化(容器化)漏洞利用验证和可量化影响的 PoC 作为路线图。参见 本分支更改了什么。
两用性警告 VulnHunter 执行两用网络安全工作(漏洞发现与 利用)。请预期存在防护措施:大多数商用模型都会应用 两用网络防护,激进的利用行为可能触发 速率限制或使用标记。VulnHunter 的开发和测试运行于 开放权重、社区提供的模型——去风险化、消融(abliterated)且 无审查——这些模型很可能在未来对组织使用至关重要。仅审计你拥有或 以其他方式获得授权审计的代码。
[!IMPORTANT] 先决条件与模型要求 VulnHunter 的方法论旨在运行于开放权重、社区提供的 模型——即组织实际可以部署的去风险化、消融、无审查模型。 需要一个有能力的推理模型;你的 harness 所提供的最强模型 能带来最佳结果,但该方法论并不 依赖于特定供应商的前沿模型。你需要自行提供模型 访问权限。
| 能力 | 上游(Capital One) | 本分支 | 状态 |
|---|---|---|---|
| Harness 可移植性 | Skills 专门调用 Claude Code;安装器目标为 ~/.claude/skills;模型门控硬编码 Opus;harness 固定 claude-opus-4-8 | Skills 为 harness 可移植的提示文件(任何具有 skills 目录 + 子代理的 harness);VULNHUNT_SKILLS_DIR / VULNHUNT_AGENTS_DIR / VULNHUNT_BIN_DIR / VULNHUNT_HOST_CMD / VULNHUNT_MODEL 环境契约;模型门控改写为“你的 harness 中最有能力的推理模型” | 已交付 |
| 无猜测安装器 | install.sh 假定 ~/.claude/skills | 显式目录,遵循 GROK_HOME 语义,将 vh 启动器写入 VULNHUNT_BIN_DIR/~/.local/bin,安装 vulnhunter-run skill + agent 定义;Windows .cmd 等价物已更新 | 已交付 |
vulnhunter-run 操作员 skill | —(缺失) | 无人值守操作员:克隆 → 狩猎 → 查找结果 → 写入/验证扫描清单,具有明确的停止规则且不即兴发挥 | 已交付 |
| 基准/评判加固 | 固定模型 + 基本重试 | 通过环境配置模型,重试/退避配置,analyze_misses 流水线损失点追踪,逐发现历史跟踪 | 已交付 |
| Harness 中立报告语言 | skills 中通篇为 Claude 特定表述 | Harness 中立工具语言(Agent → subagent,Claude CLI → harness session) | 已交付 |
| 沙箱优先漏洞利用验证 | 漏洞利用测试可能为静态追踪;运行时选择临时决定 | Docker 优先的运行时供应;每个发现记录运行时;Medium+ 严重性必须执行 | 进行中 |
| 可量化影响的 PoC | PoC 是文档;影响为断言 | 可执行 PoC + 发现中的影响数字(暴露行数、请求放大倍数、密钥滞留小时数) | 进行中 |
VulnHunter 的方法论本质上是宿主无关的:它是提示流程,而非工具绑定。上游项目在 Claude Code 内部成长起来——这是一个连贯的选择,也是正确的第一个家。但 agent-harness 的格局已经拓宽,而一个只能安装到其中之一的安防方法论,将不再是一种审计能力,而开始变成一项供应商功能。本分支做出四项更改,每项都有其理由。
这里的每个 skill 都是一个可移植的提示文件,具有明确的环境契约(VULNHUNT_SKILLS_DIR、VULNHUNT_AGENTS_DIR、VULNHUNT_MODEL、VULNHUNT_HOST_CMD),模型门控现在要求的是你的 harness 中最有能力的推理模型,而非特定产品。**更好的意义在于:**同一套方法论可安装到你的团队已经运行的任何 harness 中——并在基准运行中变得跨 harness 可比,这正是本分支的开发方式。
上游安装器无条件地将 skills 复制到 ~/.claude/skills。在一台运行两个 harness 的机器上——或一个 home 被重定位的 harness 上——这种猜测会静默地安装到错误的位置。本分支的安装器会询问,或接受环境变量,并在答案缺失时以确切指令大声失败。**更好的意义在于:**在多 harness 机器上安全,在重定位 home 下正确,配置错误时大声而非静默。
原始设计已经要求证伪和漏洞利用测试。它留下开放的是要付出多大努力来实际执行它们:静态追踪、模拟测试,还是真实的容器化服务器。在一次针对单一提交的六轮基准测试中,这种自由裁量产生了从 3 到 42 个不等的发现——并且对同一 sink 得出相反结论,一个针对 mock 得到证明,一个通过对真实服务器的测试被关闭。本分支增加了运行时供应流程(Docker 优先,逐发现记录)和 PoC 纪律,其中影响是被量化的——泄露行数、×放大倍数、密钥滞留小时数——而非叙述的。**更好的意义在于:**一个发现的有效性不再取决于哪个模型有本能去启动一个容器。(进行中——构建计划在公开路线图上;请在 issues 中询问或关注仓库的 Discussions。)
本分支新增:vulnhunter-run,一个无人值守操作员,负责克隆、狩猎、定位结果,并写入和验证扫描清单,具有明确的停止规则。基准工具通过环境获得模型配置、重试/退避旋钮,以及针对遗漏发现的损失点分析。**更好的意义在于:**一个你用来演示的工具和一个你用来排期运行的工具之间的区别。
我们将 VulnHunter 与自身进行基准对比:对一个真实生产 Go 服务进行六次完整扫描——同一提交,五种 harness/模型栈。以下数字来自这些运行,它们正是本分支存在的原因。
| 14× | 同一提交各次运行之间已确认发现的差异倍数。测量自身的流程本身就是第一个漏洞——弥合这一差距正是本分支的构建计划。 |
| 42/42 | 已确认发现均带有可执行的漏洞利用测试——每一个都 PASS,每一个都有自己的 PoC。没有任何发现凭直觉交付。 |
| 55% | 的候选发现在到达你之前被对抗性验证环节消除或降级。其他工具扫描。VulnHunter 进行质证。 |
| 315 | 单次扫描中清点的攻击者可控输入——每一个都被追踪,每一个处置都被记录。完整性是一种纪律,而非愿望。 |
| 20/20 | 单次运行中对实时服务器执行的对抗性载荷——以结果衡量,而非断言。 |
针对同一生产 Go 服务的同一提交,运行了六次完整的 VulnHunter 扫描, 跨越五种 harness/模型栈,历时约三周。以上每个数字都可追溯到保留的扫描产物——逐输入处置表、对抗性裁决表、PoC,以及已执行的漏洞利用测试。原始输出由维护者保留;请询问,或自行重新运行。
VulnHunter 以三个可组合的 agent skills 形式交付,构成一个完整、自动化的修复循环:
| Skill | 阶段 | 核心职责 |
|---|---|---|
/vulnhunt | 狩猎 | 将入口点映射到危险 sink。通过多阶段证伪流水线(Recon → Parallel Hunt → Adversarial Disprove → Capability Filter)过滤发现。仅输出带有可执行漏洞利用和拟议修复的已验证问题。 |
/vulnhunter-fix | 修复 | 开发者主导、测试驱动的修复。它编写漏洞利用演示,创建失败的安全测试(RED),实现代码修复(GREEN),验证漏洞利用被阻止且无回归,并提交可审查的 PR。 |
/vulnhunt-fix-verify | 验证 | 一个完全独立的只读 agent,独立验证某个发现是否被成功修复。它输出逐发现裁决,因此修复是被证明的,而非凭信接受。 |
注意: 若要在规模上无人值守地运行此循环,
vulnhunter-agent/将扫描器包装在无头运行时中,而harness/则跨多个仓库批量驱动它。
关于命名: 该套件是 VulnHunter,但核心扫描器命令是
/vulnhunt(以及验证器/vulnhunt-fix-verify)——较短形式是有意为之,并非拼写错误。/vulnhunter-fix修复 skill 和vulnhunter-agent/运行时保留完整拼写。
每个组件都组织为一个自包含的子树:
| 路径 | 描述 |
|---|---|
vulnhunt/ | 核心 /vulnhunt 扫描器 skill(仅提示:SKILL.md + 各阶段)。参见 vulnhunt/README.md。 |
vulnhunter-fix/ | /vulnhunter-fix skill、其配套 Python 辅助包及测试。参见 vulnhunter-fix/README.md。 |
vulnhunt-fix-verify/ | /vulnhunt-fix-verify 独立验证 skill(仅提示)。参见 vulnhunt-fix-verify/README.md。 |
vulnhunter-agent/ | 配置驱动的无头运行时包装器,运行扫描并提交 GitHub issues。参见 vulnhunter-agent/README.md。 |
harness/ | 用于运行大规模批量扫描和基准测试检测准确性的开发者工具。参见 harness/README.md。 |
vh/ | 用于单次扫描的确定性操作员 CLI:克隆、查找结果目录、写入并验证扫描清单,并启动宿主的无头命令。无模型 SDK。 |
# Clone the repository
git clone https://github.com/nealbridges/VulnHunter.git
cd VulnHunter
# Skills and agents directories are required. This script does not guess.
# If GROK_HOME is set, use that home. Do not use ~/.grok when GROK_HOME
# points somewhere else, and do not use ~/.claude/skills unless this
# process is Claude Code.
# VULNHUNT_SKILLS_DIR="$GROK_HOME/skills" \
# VULNHUNT_AGENTS_DIR="$GROK_HOME/agents" \
# ./install.sh
./install.sh
在 Windows 上,请在 cmd.exe 或 PowerShell 提示符下使用对应的 .cmd 版本:
git clone https://github.com/nealbridges/VulnHunter.git
cd VulnHunter
REM Set VULNHUNT_SKILLS_DIR to this harness's skills directory first.
.\install.cmd
REM (Optional) To clean up or remove installed skills
REM .\uninstall.cmd
[!NOTE]
install.sh/install.cmd直接复制文件(而不是创建符号链接),因为符号链接可能会破坏子代理内部的find/glob功能。拉取更新后请重新运行安装脚本以刷新本地环境。任意 harness: 这些技能都是纯提示词文件。
install.sh会将它们复制 到VULNHUNT_SKILLS_DIR,当设置了VULNHUNT_AGENTS_DIR时会将agents/vulnhunter.md复制 到该目录,并将vh启动器写入VULNHUNT_BIN_DIR或~/.local/bin。~/.local/bin必须在PATH中。 模型安装到其正在运行的 harness 时,如果设置了GROK_HOME,则使用$GROK_HOME/skills和$GROK_HOME/agents。