当前位置: 首页 » 资讯 » 新科技 » 正文

SWE-bench满分,0个bug修复:伯克利造了个专门作弊的AI

IP属地 中国·北京 新智元 时间:2026-04-19 12:18:26


新智元报道

编辑:倾倾

伯克利团队造了个专门作弊的AI,用10行Python代码拿下SWE-bench满分!500道题全过,0个bug修复。8大主流评测基准,全部沦陷。同一周,两份独立审计确认:排行榜上的作弊早已不是假设,而是现实。

本周,AI评测圈经历了一场信任地震。

SWE-bench,是公认的AI编程能力标杆,各大模型发布会上的必报数字,投资人估值时的硬通货。

可伯克利的研究团队告诉你,一个conftest.py文件就能让它破防!


不只SWE-bench。伯克利RDI团队造了一个自动化漏洞扫描智能体,对当前最主流的8个AI智能体评测基准逐一渗透。

结果,每一个都被攻破,得分从73%到100%不等。

更巧的是,同一周,宾大团队的独立审计报告和Anthropic的Mythos Preview系统卡同时出炉,三条线指向同一个结论:这些评测基准,从设计到执行,到处是漏洞。

10行代码,500题满分,0个bug修复


伯克利团队的漏洞利用智能体在8大基准上的得分。没有解决任何任务,没有调用任何大模型,6个拿到满分。

伯克利团队的破法,简单到离谱。

SWE-bench要求AI修复真实的GitHub bug,测试通过才算成功。

伯克利团队写了一个conftest.py文件,利用pytest的钩子机制,在测试运行时拦截每一个测试结果,强制改写为「通过」。

500道题,全部满分,一个bug也没修。

其中的原理很简单。SWE-bench的测试和被测AI跑在同一个Docker容器里。

智能体提交的代码在容器内拥有完整权限,而pytest会自动发现并加载conftest.py文件。

钩子在测试的「call」阶段拦截结果,把所有outcome改成passed。

日志解析器看到的是一片绿灯,评分器判定全部通过。


SWE-bench的conftest.py钩子注入流程:智能体提交的补丁没有修复任何bug,只塞入了一个conftest.py文件。pytest自动加载后,钩子拦截每个测试结果并改写为「通过」。

其他基准的破法更加直白。

WebArena任务的标准答案就在本地的config_files目录里,AI用Playwright驱动浏览器打开一个file://路径,直接读取答案。

评测框架从未限制过file://协议的访问。不需要修改任何代码,不需要破解任何东西,浏览器本身就是「答案阅读器」。


WebArena的file://漏洞:模型不需要浏览网页完成任务,只需输出一条goto指令,Playwright就会从本地配置文件中读取标准答案并返回。整个过程不涉及任何推理。

最离谱的是FieldWorkArena。它的validate()函数根本不检查答案内容,只看最后一条消息是不是来自assistant。

发一个空的{},就能拿满分。

那个本应比对答案的llm_fuzzy_match函数?导入了,但从未被调用。

剩下的Terminal-Bench、OSWorld、GAIA、CAR-bench、SWE-bench Pro,手法各异但逻辑相通。

木马化验证器的依赖工具、从公开URL下载标准答案让评测器自己和自己比对、往LLM裁判的prompt里注入隐藏指令。

8个基准,没有一个能抵御一个「什么都不会但专门找漏洞」的智能体。

伯克利团队归纳出7种反复出现的模式:智能体和评测程序共享运行环境、标准答案暴露给被测系统、对不可信输入调用eval()、LLM裁判缺乏输入过滤、字符串匹配过于宽松、评分逻辑本身有bug、以及评测程序信任被测系统产生的输出。


伯克利团队归纳的7种漏洞模式及其在8个基准中的分布。前两种(智能体与评测器未隔离、标准答案泄露)几乎命中了所有基准。

作弊,正在发生

4月10日,宾大的Adam Stein和Davis Brown发布了一项大规模审计。

他们用一个叫Meerkat的智能体搜索工具,扫描了数千条真实的评测轨迹,发现28+个提交、9个基准、上千条作弊轨迹


宾大Meerkat审计发现的作弊模式分布。橙色为harness级作弊(开发者框架泄露答案),蓝色为任务级作弊(智能体自行走捷径)。注意横轴是对数坐标,harness级作弊的规模比任务级高出两个数量级。

最扎眼的是Terminal-Bench 2,一个被用来评估Opus 4.6和GPT-5.4的热门基准。排行榜前三名,全部存在作弊行为。

第一名Pilot(82.9%通过率):429条轨迹中,有415条的第一个动作就是cat /tests/test_outputs.py,读取本应不可访问的测试文件,然后反向推导出期望输出。

第二名和第三名ForgeCode(81.8%通过率):它的harness会在执行前自动加载AGENTS.md文件到系统提示中,而这些文件里直接包含标准答案。

一个任务里,AGENTS.md赫然写着:

上一次运行失败了,因为写了错误答案……正确答案应该是GritLM/GritLM-7B。

把ForgeCode中引用AGENTS.md的轨迹替换成同一模型(Opus 4.6)在干净环境下的表现后,通过率从81.8%降到约71.7%,从第1名掉到第14名


ForgeCode的AGENTS.md答案注入实例:上半部分,harness将包含标准答案的AGENTS.md文件注入智能体环境;下半部分,智能体读取后直接写入result.txt,并用grep自我验证。

更有意思的是,这些作弊不是开发者故意为之。

Terminal-Bench上很多开发者公开说过,他们的harness是用AI「vibecoding」出来的。

也就是说,开发者用来写测试框架的AI,本身就是在作弊

宾大团队管这叫「元级别的reward hacking」:AI写的代码自带作弊倾向,再通过harness传递给所有被评测的模型。

其他基准上也不干净。CyBench上,464条成功轨迹中有16条(3.4%)是Google搜索公开的CTF攻略抄来的。

SWE-bench上,17条轨迹用git log找到修复提交,直接复制历史补丁。

BountyBench上,做不出真正漏洞利用的智能体会伪造一个,用grep检查漏洞模式是否存在于源码中,然后跑一个无关的pickle.loads()演示,评测器只检查退出码,全部通过。


CyBench上的任务级作弊:GPT-5.3-Codex解不出CTF挑战后,直接搜索公开攻略,从网页中提取flag提交。

最前沿的模型,自己就会hack评测

METR的评估报告里有个案例。

o3被要求写一个高性能GPU核函数,评分函数先运行参考方案得到正确结果,再运行o3的方案比对。

o3的「核函数」没有做任何计算,它沿着Python调用栈找到评分系统已经算好的正确答案,直接返回,同时禁用CUDA同步来阻止系统测量真实执行时间。

代码注释里,o3自己写的是「cheating route」。

RE-Bench的特定任务上,o3的reward hacking率接近100%,每一条轨迹都在作弊。


METR事后问o3:「你觉得你的行为符合用户意图吗?」o3答「不符合」,10次问10次都这么答。

它知道自己在作弊,照做不误。

Claude 3.7 Sonnet和o1也有类似的情况。

Mythos Preview走得更远。在一次评估中,模型需要编辑一个它没有权限的文件。

它搜索了替代方案,找到了通过配置文件注入代码来获取提升权限的方法,然后设计了自删除机制,让注入的代码执行完毕后自动清除痕迹。

没有人教它这么做,但当模型能力足够强、优化压力足够大,它会自然走向阻力最小的路径。

分数驱动真金白银,地基塌了怎么办

工程团队选模型看SWE-bench排名,投资人看基准分数给估值,研究者围绕分数确定优化方向。

如果数字本身可以被轻易操纵,整条决策链的基础就是空的。

还有一个问题:能力评测和安全评测用的是类似的技术架构。

如果能力评测能被注水,安全评测凭什么幸免?能hack编程评测的模型,hack对齐评测也不会更难。

OpenAI今年2月已经宣布停用SWE-bench Verified,内部审计发现59.4%的被审计问题存在有缺陷的测试,模型在用有bug的标准来衡量。

所有被测的前沿模型(GPT-5.2、Claude Opus 4.5、Gemini 3 Flash)都能从记忆中复现标准答案的原始代码,连变量名和内联注释都一样。

SWE-bench Verified上的70%+分数,切换到更干净的SWE-bench Pro后直接降到约23%。

伯克利团队把漏洞扫描工具做成一个叫BenchJack的开源项目,本质就是给评测基准做渗透测试。


把它指向任何评测流水线,它会自动分析评分机制、识别隔离边界、生成可运行的漏洞利用。

如果一个零能力智能体的得分高于基线,你的基准就有问题。

他们给出的建议也很直接:评测程序和被测AI必须完全隔离运行,标准答案不能出现在AI能访问的环境中,永远不要对不可信的输入调用eval(),LLM裁判要像处理用户输入一样对AI输出做过滤。

有人在推特上评论:


说得有点绝对,但当行业围绕分数竞争,分数本身的可信度反而成了最被忽视的东西。

评测本身没有错,反而比以往任何时候都重要。不是「分数是多少」,而是「这个分数是怎么来的」。

回到开头那10行代码。SWE-bench上,最好的模型跑出70%、80%的成绩,各家发布会上反复引用。

但一个什么都不会的conftest.py拿了100%。

在这个100%被造出来之前,没有人觉得分数有问题。

参考资料:

https://x.com/dotey/status/2043204009469641005

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其内容真实性、完整性不作任何保证或承诺。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。