
OpenAnt — 已更新!
来自 Knostic 的 OpenAnt 是领先的开源基于 LLM 的漏洞发现产品,帮助防御者主动发现已验证的安全缺陷,同时将误报和漏报降到最低。第一阶段负责检测,第二阶段负责攻击。幸存下来的才是真实漏洞。
OpenAnt
Knostic 出品的 OpenAnt 是一款基于 LLM 的开源漏洞发现产品,可帮助防御者主动发现经验证的安全缺陷,同时最大限度地减少误报和漏报。第一阶段负责检测。第二阶段负责攻击。能存活下来的才是真实漏洞。
我们对此产品相当自豪,目前正在就其发现走漏洞披露流程。但请记住,这最初是一个研究项目,部分功能仍处于测试阶段。我们欢迎贡献,让它变得更好。
为什么开源?
考虑到 AI 发现的漏洞呈爆炸式增长,我们希望 OpenAnt 能成为帮助开源维护者领先于攻击者的工具——他们可以自己使用它,也可以免费提交自己的仓库进行扫描。
此外,由于 Knostic 专注于保护智能体和编程助手,而非漏洞研究或应用安全,加上我们本身喜爱开源,因此决定以 Apache 2 许可证发布 OpenAnt。另外,你可能听说过 OpenAI 的 Aardvark(现为 Codex Security)和 Anthropic 的 Claude Code Security,我们完全没有与它们竞争的意思。
技术细节与开源项目免费扫描
有关技术细节、局限性和 token 成本,请查看这篇博客文章: https://knostic.ai/blog/openant
要提交你的仓库进行扫描: https://knostic.ai/blog/oss-scan
支持的语言
- Go
- Python
- JavaScript/TypeScript (beta)
- C/C++ (beta)
- PHP (beta)
- Ruby (beta)
- Zig (beta)
- Swift (beta)
致谢
研究与构思:Nahum Korda。
产品化:Alex Raihelgaus、Daniel Geyshis。
感谢:Michal Kamensky、Imri Goldberg、Gadi Evron、Daniel Cuthbert、Josh Grossman 和 Avi Douglen。
了解 Knostic
如果你喜欢我们的工作,欢迎了解我们在 Knostic 所做的事情——保护你的智能体和编程助手,防止它们删除你的硬盘和代码,并控制相关的供应链风险,如 MCP 服务器、扩展和技能。
本地安装
构建 CLI 二进制文件(需要 Go 1.25+):
cd apps/openant-cli && make build
这会编译 Go 源码并将二进制文件输出到 apps/openant-cli/bin/openant。
将其符号链接到 PATH 中,这样你就可以在任何地方运行 openant:
ln -sf "$(pwd)/apps/openant-cli/bin/openant" /usr/local/bin/openant
注意:请在仓库根目录执行此命令,以便 $(pwd) 解析为正确的绝对路径。
配置 LLM
OpenAnt 将每个流水线阶段路由到可配置的(provider, model)组合。最快的路径是使用交互式向导:
openant setup llm
你可以为配置命名(例如 my-llm),为每个流水线阶段选择一个提供商(anthropic、openai 或 google),每个提供商只需输入一次 API key。向导会用一次 1-token 请求探测每个唯一的 provider+model 组合,然后写入 ~/.config/openant/config.json。使用 --llm-config 运行扫描:
openant scan /path/to/repo --llm-config my-llm
向导默认值反映了项目对各阶段的推荐配置(检测/验证/可达性审查使用更强的推理模型;上下文、报告和测试生成使用更轻量的模型)——你可以按需覆盖任何选项。
内置适配器
| 提供商类型 | API key 获取地址 | 备注 |
|---|---|---|
anthropic | console.anthropic.com | 参考适配器。不包含在 Claude Pro / Max 订阅中——需单独计费。 |
openai | platform.openai.com | 不包含在 ChatGPT / Codex 订阅中——需单独计费。 |
google | aistudio.google.com | 不包含在 Gemini Advanced 中——需单独计费。 |
三者都支持工具调用(tool calling),因此任何一个都可以驱动使用智能体工具调用循环的 enhance 和 verify 阶段。
仅使用 Anthropic 的快速配置
如果你只想要当前各阶段的 Claude 默认配置,而无需其他,可以跳过向导:
openant set-api-key sk-ant-...
openant scan /path/to/repo
这会使用内置的 openant-default 配置(已编译进二进制文件,无需 config.json)——检测阶段使用 Claude Opus 4.6,其余阶段使用 Sonnet 4。
手写配置文件
向导会为你写入 ~/.config/openant/config.json,但你也可以直接编辑它。每个 llm-config 都必须列出全部七个流水线阶段:
{
"$schema_version": 2,
"default_llm": "my-llm",
"llm_providers": {
"anthropic": {"type": "anthropic", "api_key": "sk-ant-..."},
"openai": {"type": "openai", "api_key": "sk-proj-..."},
"google": {"type": "google", "api_key": "AIza..."}
},
"llm_configs": {
"my-llm": {
"app_context": {"provider": "openai", "model": "gpt-4o-mini"},
"llm_reach": {"provider": "anthropic", "model": "claude-opus-4-6"},
"enhance": {"provider": "openai", "model": "gpt-4o-mini"},
"analyze": {"provider": "anthropic", "model": "claude-opus-4-6"},
"verify": {"provider": "anthropic", "model": "claude-opus-4-6"},
"dynamic_test": {"provider": "google", "model": "gemini-2.0-flash"},
"report": {"provider": "google", "model": "gemini-2.0-flash"}
}
}
}
提供商接受自定义 base_url,用于兼容 OpenAI / Anthropic 的代理(OpenRouter、vLLM、Bedrock、内部网关)。openant-default 配置(所有阶段均使用 Claude)已内置,无论文件内容如何都始终可用。
添加新的提供商适配器
OpenAnt 的适配器层是一个精简的 Python 配方——一个实现 LLMAdapter Protocol 的 Python 文件、一个用于契约测试框架的工厂函数,外加一个注册表条目——仅此即可让适配器在手写配置中运行。如果还希望它出现在 openant setup llm 向导中并通过保存前探测,需要在 apps/openant-cli/cmd/setup.go 中添加几个 Go 接触点(受支持的提供商列表、探测 case、各阶段默认模型映射)以及一个 Go 探测函数。适配器接入后,12 个契约测试会自动对其运行。完整配方请参阅 docs/features/llm-providers/HOW_TO_ADD_AN_ADAPTER.md。
Python 运行时
OpenAnt 的解析、增强、分析和报告代码需要 Python 3.11+。Go CLI 按以下顺序选择解释器:
OPENANT_PYTHON环境变量(设置此变量以固定特定的解释器——例如OPENANT_PYTHON=python3.11)。- 位于
~/.openant/venv/的托管虚拟环境(首次使用时自动创建)。CLI 在 Linux/macOS 上使用bin/python,在 Windows 上使用Scripts\python.exe。 PATH中的python3/python。
如果以上都无法提供 Python 3.11+,命令将退出并报错,指向 python.org。要重建过期的托管虚拟环境(例如在升级 Python 之后),请删除 ~/.openant/venv/ 并重新运行任意 openant 命令。
数据目录
OpenAnt 会创建两个目录:
~/.config/openant/— CLI 配置(config.json)。存储你的 API key、活动项目和偏好设置。文件权限被限制为0600。~/.openant/— 项目数据。每个已初始化的项目都会在~/.openant/projects/<org>/<repo>/下获得一个工作区,其中包含project.json和一个存放各提交产物的scans/目录。
分析项目
1. 初始化
将 OpenAnt 指向一个代码仓库。-l(language)标志为必填项——使用 go 或 python。
# Remote — clones the repo
openant init <repo-url> -l go
# Remote — pin to a specific commit
openant init <repo-url> -l go --commit <sha>
# Local — references the directory in-place
openant init <path-to-repo> -l go --name <org/repo>
这会创建一个项目工作区并将其设为活动项目。之后的所有命令都会自动作用于活动项目——无需路径参数。
2. 运行流水线
每个步骤都会从项目的扫描目录中获取上一步的输出:
openant parse
openant enhance
openant analyze
openant verify
openant build-output
openant report -f summary
或者用一条命令运行完整流水线:
openant scan --verify
同时处理多个项目
流水线一次只处理一个项目。运行 openant init 会将新初始化的项目设为活动项目,因此之后的所有命令默认都针对它。
如果你同时处理多个项目,有两种选择:
# Option 1: switch the active project
openant project switch org/repo
openant parse
# Option 2: target a project directly with -p
openant parse -p org/repo
项目管理
openant project list # shows all projects, marks active
openant project show # details of active project
openant project switch <org/repo> # switch active project
路线图
以下事项按无特定顺序列出:
- 更多提供商适配器。 Ollama(本地模型)、vLLM、Cohere、Mistral、Groq、Amazon Bedrock、Azure OpenAI——按照贡献者指南,每个都只需一个精简的 Python 适配器配方(如果你希望它出现在
openant setup llm中,还需添加少量 Go 向导/探测接触点)。降低本地/私有化部署推理的门槛。 - 基于订阅的认证。 ChatGPT / Codex、Claude Pro / Max 和 Gemini Advanced 订阅目前不提供 API 配额——用户必须为每个提供商单独维护一个 API 层级密钥。基于 OAuth、借助消费级订阅的适配器可以弥补这一差距。
- 跨提供商的工具调用差异。 三个内置适配器都支持工具调用,但长尾场景(并行工具调用、严格模式下的 schema 强制、部分 JSON 的重试语义)在不同提供商之间表现各异。真实扫描会暴露这些问题——欢迎提交 PR。
- 更多语言。 上面的支持语言列表即当前覆盖范围。Rust、Java、C# 和 Swift 是经常被提及的。
- 托管扫描服务。 Knostic 目前通过上方链接的表单为 OSS 项目提供免费扫描;未来可能为可信合作伙伴提供自助式 API。
以上任何一项都欢迎提交 PR——如果范围不小,请先开一个 issue,以便你在动手之前我们先对齐。
许可证
本项目采用 Apache 2 许可证。详情请参阅 LICENSE 文件。
免责声明与法律声明
本项目仅用于防御和研究目的。OpenAnt 仍处于研究阶段,请谨慎使用,风险自负。Knostic、OpenAnt 及其相关的开发人员、研究人员和维护者不对因使用本工具而产生的任何滥用、损害或后果承担任何责任。
只扫描你拥有或明确获准测试的代码。如果你通过合法途径在他人的项目中发现了漏洞,请遵循协同漏洞披露(coordinated vulnerability disclosure)实践,在公开之前先向维护者报告。