OpenAnt:闭环式 LLM 漏洞发现,降低误报与成本
Knostic 的 OpenAnt(论文于 2026 年 6 月 17 日公开)将 LLM 推理与对抗式及动态验证结合。在 8 个真实项目上发现 190 个候选漏洞,自动复现 144 个,成本约 1461 美元。
这是什么?
OpenAnt 是由 Knostic(Nahum Korda 与 Gadi Evron)开发的开源漏洞发现系统。它将静态程序分析与大语言模型(LLM)推理结合,随后通过一个自动化的对抗式环节和一次沙箱化的漏洞利用运行来验证每一项发现。配套论文 arXiv:2606.19149(《OpenAnt: LLM-Powered Vulnerability Discovery Through Code Decomposition, Adversarial Verification, and Dynamic Testing》)最初于 2026 年 3 月 11 日预发布,并于 2026 年 6 月 17 日公开。该工具以 Apache 2.0 许可证发布。
重点不在于一种新攻击,而是一次有量化依据的证明:在整个代码仓库尺度上找到「真正可利用」漏洞的成本正在迅速下降——而让结果可信的,是严谨的验证,而非模型的原始输出。
工作原理
OpenAnt 运行一条六阶段流水线:先在不消耗任何 token 的前提下收窄搜索空间,再对剩余部分逐步加强审查。
- 代码解析。 使用各语言特定的 AST 提取函数,并构建双向调用图(Python、JavaScript/TypeScript、Go、C/C++、Ruby、PHP)。无 LLM 成本。
- 可达性过滤。 仅保留可从外部入口点(HTTP 处理器、CLI 解析器、WebSocket 处理器、文件读取器)到达的函数。仅此一步就在大型项目中移除了约 97% 的代码。无 LLM 成本。
- 暴露分类。 一个 Claude Sonnet 4 智能体追踪调用者与数据流,将每个单元标注为「可利用」「内部可疑」「安全控制」或「中性」。
- 漏洞检测。 Claude Opus 4 对每个暴露单元进行推理:这段代码做什么,输入来自何处,可能产生什么风险。
- 对抗式验证。 这是关键差异所在。与其问模型「你能利用它吗?」——对此,迎合型模型几乎总会回答能——OpenAnt 强制施加一个「受约束的攻击者人格」:仅限浏览器访问,无服务器端权限,无管理员凭据,无本地文件访问。每一步利用都必须被显式追踪,且有效漏洞必须损害攻击者以外的第三方。约一半被标记的发现在此处因不切实际而被排除。
- 动态验证。 对于幸存的发现,系统生成一个 Dockerfile 和测试脚本,在隔离容器中运行该利用(只读文件系统、内存与 CPU 上限、120 秒超时),并在之后丢弃每个产物。容器必须报告
CONFIRMED、NOT_REPRODUCED、BLOCKED、INCONCLUSIVE或ERROR。
在八个真实项目(OpenSSL、Flowise、n8n、WordPress、Rails、paperless-ngx、eShopOnWeb、object-browser)合计 64,132 个函数上,过滤将集合缩减至 2,281 个可达单元,再到 586 个外部可利用单元。检测标记了 376 个,对抗式验证确认了 190 个,动态测试又独立复现了其中 144 个——复现率为 75.8%——覆盖 30 多类漏洞,包括 IDOR/缺失授权、批量赋值、SSRF、路径遍历与注入等。
为什么重要
两个数字道出了关键。其一,完整运行的成本约为 1461 美元;若没有可达性过滤,同样的分析约需 23,700 美元——可见有纪律的范围收窄让仓库尺度的 LLM 分析在经济上变得可行。其二,四分之三被确认的发现都附带一份自动生成、可工作的概念验证,而非一句「这看起来有风险」的笼统警告。
这一组合之所以重要,是因为传统静态分析(SAST)让团队淹没在误报之中——实证研究报告的误报率从个位数百分比到 40% 以上不等,因此只有约 20% 的开发者会主动使用 SAST。OpenAnt 的闭环恰恰针对这一问题:对抗式人格与动态运行剔除了远程攻击者无法触及的理论性发现。该工具与业界的努力并列,如 Google 的 Big Sleep、OpenAI 的 Aardvark 以及 Anthropic 的 Claude Code Security。
防御一侧的反面无可回避:让维护者得以扫描自身代码的同一套经济学,也让攻击者得以扫描它。当经过验证、可利用的发现只需几次 API 调用的代价即可产出时,从公开披露到野外利用之间的窗口将持续收窄。
防御
对维护者与安全团队而言,可落地的要点很具体:
- 先在自己的仓库上使用闭环工具。 OpenAnt 免费且在设计上面向防御;Knostic 还为开源项目提供免费扫描。在你拥有的代码上运行它——且仅限你拥有的代码——能把这种不对称扭转回防御者一侧。
- 绝不信任 LLM 原始的「存在漏洞」判定。 迎合型模型几乎会确认任何事。在将某一发现视为真实之前,应要求一份受约束攻击者的追踪记录,并最好附带一个已复现的利用。
- 优先处理外部可达的入口点。 可达性过滤反映了攻击者的真实思路;在加固内部工具函数之前,先加固 HTTP 处理器、CLI 解析器与文件读取器。
- 缩短你的修补节奏。 应假设针对已披露缺陷的、经验证的漏洞利用可能在数小时内出现。当你在他人代码中发现问题时,请配合协调式披露。
- 保留互补方法。 OpenAnt 针对输入到汇点的缺陷(注入、SSRF、路径遍历、授权绕过、XSS),但在逻辑缺陷、竞态条件、内存安全类问题与协议违规方面较弱——请保留模糊测试,并为关键组件保留形式化方法。
状态
| 项目 | 详情 |
|---|---|
| 论文 | arXiv:2606.19149,2026 年 6 月 17 日公开(最初于 2026 年 3 月 11 日预发布) |
| 代码 | github.com/knostic/OpenAnt,Apache 2.0 |
| 评测模型 | Claude Sonnet 4(阶段 3、6)与 Claude Opus 4(阶段 4、5) |
| 范围 | 由输入驱动的缺陷,6 种语言;不含逻辑/竞态/内存安全类缺陷 |
| 成熟度 | 以研究形式发布,多项功能处于 beta |
作者指出,OpenAnt 提供的是可利用性的经验证据,而非形式化证明;未能复现某个利用,并不表明该漏洞不可能存在。