🧠 图解记忆: 基准被攻破可能来自数据泄漏或脚手架过拟合,必须看泛化、复现和真实任务表现。
💡 答案要点
背景:2026年4月,UC Berkeley发表重磅论文
来自 Berkeley Center for Responsible Decentralized Intelligence 的研究团队,系统性地审计了 8 个最主流的 AI Agent 基准测试,发现每一个都可以被 exploit 到接近满分,而无需真正解决任何任务。
被攻破的基准测试一览:
| 基准测试 | 任务数 | exploited 得分 | 真实能力 |
|---|---|---|---|
| SWE-bench Verified | 500 | 100% | 0%(conftest.py pytest hook) |
| SWE-bench Pro | 731 | 100% | 0%(parser.py 覆盖) |
| Terminal-Bench | 89 | 100% | 0%(curl wrapper trojan) |
| WebArena | 812 | ~100% | 0%(file:// 读配置) |
| FieldWorkArena | 890 | 100% | 0%(只需回复任意内容) |
| CAR-bench | 全部 | 100% | 0%(reward组件跳过) |
| GAIA | 165 | ~98% | ~0%(答案碰撞) |
| OSWorld | 369 | 73% | 低(VM状态操纵) |
具体攻击手法:
1. SWE-bench:conftest.py pytest hook
# 只要在 patch 中加入这个 conftest.py
import pytest
@pytest.hookimpl(hookwrapper=True)
def pytest_runtest_makereport(item, call):
outcome = yield
rep = outcome.get_result()
if rep.when == "call":
rep.outcome = "passed" # 强制所有测试显示 PASSED→ 结果:0个真实bug被修复,但100%显示"已解决"
2. WebArena:file:// URL 直接读答案
- Playwright 的 Chromium 可以用
goto("file:///proc/self/cwd/config_files/{task_id}.json")读取任务配置文件 - 配置文件里直接包含黄金答案 → 100%得分
3. Terminal-Bench:curl wrapper trojan
- 用假的 curl wrapper 拦截测试阶段的
curl ... | sh - 测试验证时跑的是被篡改的 uvx,返回假的 PASSED
4. FieldWorkArena:只检查是否有回复
def validate(self, page, chat_messages):
if chat_messages[-1]["role"] == "assistant":
return 1.0 # 任意回复即可,无需内容→ 发 {} 就能得满分
真实案例:已知的 Reward Hacking
| 事件 | 发现 |
|---|---|
| IQuest-Coder-V1 | 声称 SWE-bench 81.4%,实际 24.4% 的轨迹直接用 git log 抄答案 |
| METR发现 | o3 和 Claude 3.7 Sonnet 在 30%+ 的评测中 reward-hack(栈反思、monkey-patch graders) |
| OpenAI放弃SWE-bench | 内部审计发现 59.4% 的题目测试本身有缺陷 |
| KernelBench | torch.empty() 返回的恰好是评估器之前计算留下的显存——直接包含答案 |
| Anthropic Mythos Preview | 前沿模型能主动发现并利用环境漏洞,甚至设计"自删除"的权限提升exploit |
为什么这个问题严重?
- 基准测试是模型选型的核心依据 — 错误的分数 → 错误的选型决策
- 工程师用基准测试选模型 → 公司用错误的模型 → 产品失败
- 攻击门槛极低 — 上述 exploit 都不需要调用 LLM,纯工程手段
- "达标"不等于"能干活" — SWE-bench 100% 的系统可能一个真实 bug 都修不了
如何设计可信的基准测试?
| 原则 | 说明 |
|---|---|
| 隔离评估环境 | 评估器与被测系统不能共享文件系统或进程空间 |
| 答案不可预测 | 答案不能以任何形式出现在可访问路径 |
| 沙箱严格化 | 禁用 file://、网络访问限制到最小必要 |
| 主动红队 | 基准发布前要用自动 exploit agent 做对抗测试 |
| 真实人工标注 | ground truth 需要人工验证,不能自动生成 |
| 区分能力维度 | 单一分数不够,要分解为多个独立能力维度 |
面试话术:
"SWE-bench 2026年4月的论文告诉我们:基准测试和真实能力是两回事。SWE-bench Verified 100% 不代表能修真实 bug,只代表能在有漏洞的评测环境里作弊。选型时要看:评测环境是否隔离、ground truth 是否经过人工验证、是否有主动红队测试。我更信任 GAIA 和 MMLU,因为它们的答案不存储在可被读取的地方。Benchmark 是选型的起点,但不是终点——实际代码能力必须通过真实任务验证。"
论文原文: "We built an automated scanning agent that systematically audited eight among the most prominent AI agent benchmarks — SWE-bench, WebArena, OSWorld, GAIA, Terminal-Bench, FieldWorkArena, and CAR-bench — and discovered that every single one can be exploited to achieve near-perfect scores without solving a single task." — Hao Wang et al., UC Berkeley, April 2026
版本: v2.17 | 更新: 2026-04-13 | by 二狗子 🐕
