benchjack/benchjack
GitHub: benchjack/benchjack
BenchJack 是一个 AI 代理基准测试的可破解性扫描器,帮助在评估前发现并利用漏洞。
Stars: 11 | Forks: 1
在您的模型开始之前,先查明您的 AI 基准测试是否可以被游戏化。
BenchJack 是一个针对 AI 代理基准测试的可破解性扫描器。它运行一个多阶段审计管道——静态分析工具加上通过 [Claude Code](https://docs.anthropic.com/en/docs/claude-code) 或 [Codex](https://github.com/openai/codex) 进行的人工智能深度检查——并将结果实时流式传输到 Web 仪表板。
将其指向任何基准测试仓库。BenchJack 会告诉你代理是否可以作弊。
Real-time dashboard showing a vulnerability scan of Terminal-Bench. Red/yellow indicators are vulnerability classes V1–V8.
## 为什么你需要 BenchJack?
AI 基准测试本应衡量能力——但许多基准可以被游戏化。代理可以读取随测试一起提供的答案密钥、劫持评估流程、对不受信任的输入使用 `eval()`,或通过提示注入欺骗 LLM 法官。当基准测试可被破解时,排行榜就会失去意义。有关这为何重要的更多信息,请参阅我们的[关于可信基准的博客文章](https://moogician.github.io/blog/2026/trustworthy-benchmarks-cont/)。
BenchJack 自动化了查找这些弱点的过程:
- **8 个漏洞类别**,涵盖最常见的基准测试利用方式——从泄露答案(V2)到缺乏输入消毒的 LLM 法官(V4),再到授予不必要的权限(V8)
- **静态 + 人工智能混合分析**——Semgrep、Bandit 和 Hadolint 捕获表面问题;Claude Code 或 Codex 处理深层架构推理
- **概念验证生成**——不只是标记问题,还会生成可工作的漏洞利用代码
- **实时流式仪表板**——在浏览器中实时观看审计过程
- **Docker 沙箱**(进行中)——在丢弃权限的只读容器中运行分析
- **Claude Code 技能**——也作为独立的 [Claude Code 技能](https://docs.anthropic.com/en/docs/claude-code/skills) 提供,位于 `.claude/skills/benchjack/`,因此你可以直接在 Claude Code 中运行 `/benchjack
`,无需 Web UI 或 CLI 包装器
## BenchJack 已发现什么
我们使用 BenchJack 审计了 8 个主要的 AI 代理基准测试,涵盖 4,458 个任务——并且每一个都可被利用。代理在不进行任何合法工作的情况下达到了 73% 到 100% 的分数。没有解决方案代码,最少的 LLM 调用,没有实际推理。详细信息请参见[我们的博客文章](https://moogician.github.io/blog/2026/trustworthy-benchmarks-cont/)。
| 基准测试 | 任务数 | 漏洞利用 | 分数 |
|-----------|------:|---------|------:|
| **SWE-bench Verified** | 500 | 通过 `conftest.py` 的 pytest 钩子注入强制所有测试通过 | 100% |
| **SWE-bench Pro** | 731 | 相同的 `conftest.py` 钩子 + Django `unittest.TestCase.run` 猴子补丁 | 100% |
| **Terminal-Bench** | 89 | 二进制特洛伊化——替换 `/usr/bin/curl`,伪造 `uvx`/pytest 输出 | 100% |
| **WebArena** | 812 | `file://` URL 从任务配置中泄露参考答案 | ~100% |
| **FieldWorkArena** | 890 | 非功能性验证器——发送 `{}` 即可获得满分 | 100% |
| **OSWorld** | 369 | 从公共 HuggingFace URL 下载黄金文件并通过 `eval()` 运行评分器 | 73% |
| **GAIA** | 165 | 公共答案查找 + 字符串匹配中的规范化冲突 | ~98% |
| **CAR-bench** | — | 隐藏 HTML 指令使 LLM 评分器产生偏差;通用拒绝跳过评分 | 100% |
还有更多即将推出——请参阅 [`audits/`](audits/) 获取社区贡献的审计报告,以及 [`audits/README.md`](audits/README.md) 了解如何提交自己的审计。
## 快速开始
```
# 安装
uv tool install .
# 运行 — 在 http://localhost:7832 打开浏览器仪表板
benchjack
```
就这样。指定基准测试的名称(或路径/URL)并开始审计。
BenchJack 会查找并克隆仓库,运行完整管道,并将结果流式传输到仪表板。
## 安装
### 先决条件
- Python 3.11+
- [uv](https://docs.astral.sh/uv/) 用于包管理
- 至少一个 AI 后端:
- [Claude Code](https://docs.anthropic.com/en/docs/claude-code)(推荐):`npm i -g @anthropic-ai/claude-code`
- [OpenAI Codex](https://github.com/openai/codex)(进行中,拒识率较高)
- Docker(可选,用于沙箱执行)
- 无 Docker:安装 [`semgrep`](https://semgrep.dev/)、[`bandit`](https://bandit.readthedocs.io/) 和 [`hadolint`](https://github.com/hadolint/hadolint) 用于静态分析
### 从源代码安装
```
git clone https://github.com/benchjack/benchjack.git
cd benchjack
uv tool install .
```
若要同时安装基于 Python 的静态分析工具:
```
uv pip install ".[tools]"
```
## 第一次运行前
安装完成后,请确保你的 AI 后端已认证并且工具可用。
### 后端认证
**Claude Code** — 在终端中运行 `claude` 一次并完成登录流程。BenchJack 调用 `claude --print`,这需要活跃的会话。如果你更喜欢基于 API 密钥的身份验证,请在环境中设置 `ANTHROPIC_API_KEY`。
**OpenAI Codex** — 运行 `codex` 一次进行认证。Codex 使用存储在 `~/.codex/` 中的 OAuth 会话。
### 验证你的设置
```
# 检查所选择的后端是否在 PATH 中
which claude # or: which codex
# 检查静态分析工具(仅在不使用 Docker 时需要)
which semgrep && which bandit
# 可选:检查 Docker(仅在使用 --sandbox 时需要)
docker info
```
如果所选后端在 PATH 中缺失,BenchJack 会提前报错。静态分析工具(`semgrep`、`bandit`、`hadolint`)仅在无 `--sandbox` 运行时需要;在沙箱模式下它们已内置在 Docker 镜像中。
## 用法
### Web UI(默认)
```
benchjack # start the dashboard, configure from the UI
benchjack --port 9000 # custom port (default: 7832)
```
仪表板允许你配置后端、模式、沙箱和 PoC 级别,然后一键开始审计。
### CLI 模式
用于无头/脚本化操作:
```
benchjack --no-ui [OPTIONS]
Options:
--backend NAME AI backend: claude | codex | auto (default: claude)
--model MODEL Model for AI analysis phases
--poc-level LEVEL PoC generation: full | partial | skip (default: partial)
--audit Audit mode (default)
--hack-it Reward-hack mode
--sandbox Run inside Docker sandbox
--no-sandbox Run on host (default)
```
### 示例
```
# 基本审计
benchjack ./my-benchmark --no-ui
# 使用特定模型
benchjack ./my-benchmark --no-ui --model claude-sonnet-4-6 --poc-level partial
# 带有 Codex 的奖励破解模式,沙箱环境
benchjack ./my-benchmark --no-ui --hack-it --backend codex --sandbox
# 审计远程仓库
benchjack https://github.com/org/benchmark --no-ui
```
[manual](docs/MANUAL.md) 可查阅仪表板和 CLI 的详细使用指南。
## 管道流程
BenchJack 运行一个 6 阶段管道。每个阶段都会将事件实时流式传输到仪表板(或 CLI)。
| 阶段 | 作用 | 引擎 |
|-------|-------------|--------|
| **Setup** | 克隆或定位基准测试仓库 | git |
| **Static Scan** | 运行 Semgrep、Bandit、Hadolint、Docker 分析器、Trust Mapper | 静态工具 |
| **Reconnaissance** | 映射评估架构、入口点、信任边界 | 人工智能 |
| **Vulnerability Scan** | 检查全部 8 个漏洞类别(V1–V8) | 人工智能 |
| **PoC Construction** | 生成概念验证漏洞利用 | 人工智能 |
| **Report** | 生成包含发现和严重性的结构化审计报告 | 人工智能 |
## 漏洞类别
| ID | 名称 | 示例 |
|----|------|---------|
| **V1** | 代理与评估器之间无隔离 | 代理向评估器读取的同一文件系统写入 |
| **V2** | 测试附带答案 | 运行时可访问地面真实标签 |
| **V3** | 对不受信任输入执行远程代码 | 在代理输出上使用 `eval()` / `exec()` |
| **V4** | LLM 法官缺乏输入消毒 | 模型评分评估中的提示注入 |
| **V5** | 弱字符串匹配 | 使用 `in` 或正则表达式进行评分,接受部分或错误答案 |
| **V6** | 评估逻辑缺口 | 评分中的边界错误、遗漏边界情况 |
| **V7** | 信任不受信任代码的输出 | 代理生成的代码以评估器权限运行 |
| **V8** | 授予不必要的权限 | 在不需要时进行网络访问、文件系统写入、sudo |
## 沙箱
BenchJack 可以在 Docker 容器中运行所有分析以实现隔离:
- **静态工具** 以 `--network=none`、`---drop=ALL` 运行,基准测试以只读方式挂载
- **AI 后端** 运行网络访问(API 调用所需),但基准测试仍为只读且主机权限被丢弃
沙箱镜像(`benchjack-sandbox`)会在首次使用时自动构建。传递 `--no-sandbox` 可跳过 Docker 并直接在主机上运行。
## 项目结构
```
benchjack.py CLI entry point
server/
app.py FastAPI application
ai_runner.py Claude Code / Codex CLI wrapper
sandbox.py Docker sandbox management
event_bus.py SSE pub-sub for real-time streaming
pipeline/
audit.py Audit pipeline
hack.py Reward-hack pipeline
prompts.py AI prompt templates
models.py Data models
routes/ REST + SSE endpoints
web/
index.html Dashboard
style.css Styles
app.js Frontend logic
js/ JS modules
.claude/skills/benchjack/
SKILL.md Claude Code skill definition (run /benchjack in Claude Code)
tools/ Static analysis scripts & Semgrep rules
audits/ Community-contributed audit writeups (one folder per benchmark)
Dockerfile.sandbox Sandbox container image
```
## 预览限制 / 已知问题
BenchJack 处于早期预览阶段。请注意以下几点:
- **Codex 后端为实验性。** Codex 在安全相关提示上拒识率较高,导致许多管道阶段产生不完整结果或静默失败。推荐使用 Claude Code 作为后端。
- **Docker 沙箱为进行中。** 沙箱执行(`--sandbox`)对静态分析有效,但 AI 后端容器可能在 Linux 主机上遇到凭据转发边缘情况(macOS 密钥链提取仅限 macOS)。在 Linux 上使用沙箱模式时,请显式设置 `ANTHROPIC_API_KEY`。
- **没有 PoC 验证的自动化测试。** 生成的证明概念漏洞利用不会自动验证是否适用于目标基准测试。PoC 阶段可能生成看起来正确但在运行时失败的代码。有关如何帮助构建验证预言机,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。
- **仅顺序管道。** 所有阶段按顺序运行——目前尚无跨漏洞类别或任务的并行化。
- **速率限制。** 对大型基准测试的长时间审计可能会达到 API 速率限制。BenchJack 会检测 Claude Code 的速率限制错误,但不会自动重试;你需要重新运行。
- **单用户 Web UI。** 仪表板不支持并发审计会话。启动新审计需要打开新窗口。
## 引用
如果你在研究中使用 BenchJack,请引用:
```
@software{benchjack2025,
title = {BenchJack: AI Agent Benchmark Hackability Scanner},
author = {BenchJack Contributors},
year = {2025},
url = {https://github.com/benchjack/benchjack}
}
```
## 许可证
Apache 2.0 — 详细信息请参见 [LICENSE](LICENSE)。标签:Agent作弊, AI安全, AI驱动深度检查, Apache 2.0, Chat Copilot, Claude Code, Codex, Python, Python 3.11, Python 3.12, Python 3.13, SEO: AI agent security, SEO: AI benchmark scanner, SEO: eval vulnerability, SEO: hackability scanner, SEO: leaderboard security, 云安全监控, 人工智能安全, 合规性, 多阶段审计, 实时仪表盘, 开源安全工具, 无后门, 测评漏洞, 评测治理, 请求拦截, 逆向工具, 逆向工程平台, 静态分析, 黑客评估