想象你是一位老师,正试图给一群非常 advanced 的学生(大型语言模型,或称 LLM)打分,这些学生正在学习编写计算机代码。问题在于,这些学生非常擅长编写那些看起来正确、却包含隐藏安全陷阱(如后门或薄弱锁)的代码,黑客可以利用这些陷阱。
为了测试他们,你需要一场“期末考试”(基准测试),不仅要检查代码是否运行正常,还要检查它是否安全。
问题:“人工评分”的瓶颈
此前,创建这些安全考试就像为每一位学生手工打造独一无二的复杂密室逃脱。这需要安全专家花费数小时设计场景、编写测试题,并构建特定的“黑客攻击”(漏洞利用)来测试代码是否会崩溃。
- 弊端:等到专家完成一份考试的构建时,学生们可能已经背下了答案(因为考题泄露到了他们的训练数据中)。
- 结果:我们新鲜、高难度的考试耗尽的速度,远快于我们编写它们的速度;而且,现有的考试对于最聪明的学生来说也变得过于简单。
解决方案:AUTOBAXBUILDER(“自我复制的考试工厂”)
作者构建了一个名为AUTOBAXBUILDER的新系统。你可以将其想象为一个由 AI 驱动的“考试工厂”,它能够从零开始自行构建安全测试,无需人类执笔。
以下是该工厂如何一步步运作,使用一个简单的类比:
1. 建筑师(场景生成)
首先,系统扮演建筑师的角色。它接到指令:“设计一个新的 Web 应用程序场景,比如徽章生成器或文件上传器。”它会发明一个前所未有的全新概念,确保学生无法通过死记硬背旧答案来作弊。
2. 建造者与检查员(功能测试)
接下来,系统要求几个不同的 AI“建造者”根据这个新构思来构建应用程序。
- 转折:随后,系统扮演起严格的检查员角色。它编写一份检查清单(功能测试),以确认建筑物是否稳固。
- 循环:如果建筑物倒塌,系统会告诉建造者:“修好它!”如果检查清单过于严苛(例如,规则只说了“要有一扇门”,清单却要求“门的宽度必须正好是 3.00 英寸”),系统会意识到清单有误并修正清单。它会不断打磨建筑物和清单,直到两者完美匹配。
3. 黑客(安全漏洞利用)
这是最关键的部分。一旦建筑物稳固,系统便戴上“黑客帽”。
- 它审视建筑物并问道:“窃贼如何才能闯入?”
- 它尝试闯入。如果成功,就记录该方法。
- 关键检查:为了确保“黑客”不是在瞎猜,系统会构建该建筑物的第二个版本,即安全版本(加固的门、警报器)。它在安全建筑物上运行黑客的 trick。
- 如果该 trick 能攻破安全建筑物,说明黑客错了(该 trick 过于宽泛)。
- 如果该 trick 攻破了薄弱建筑物,但未能攻破安全建筑物,则该测试有效。
- 此过程重复进行,直到系统找到一把能打开薄弱之门却打不开坚固之门的“钥匙”。
结果:更快、更便宜、更好的考试
作者利用该工厂创建了AUTOBAXBENCH,这是一个包含 40 个安全考试的大型新集合(数量超过此前最佳集合的两倍)。
- 速度与成本:人类构建一份考试需要 3 小时,而该工厂在不到 2 小时内即可完成,成本低于 4 美元。它将人力投入减少了12 倍。
- 质量:当他们将工厂生成的考试与旧的人工考试进行比较时,工厂的测试同样出色,但往往更严格。它们发现了更多人类专家遗漏的安全缺陷。
- 现实检验:当他们在这些新考试上测试全球最聪明的 AI 编程模型时,结果令人清醒。即使是最好的模型,也只能通过约*36%*的安全测试。这意味着,虽然 AI 在编写能运行*的代码方面表现出色,但在编写安全*的代码方面仍然非常糟糕。
总结
这篇论文提出了一种工具,可自动化生成 AI 代码的安全测试。它就像一位不知疲倦的安全警卫,能够发明新的迷宫、建造墙壁,然后立即尝试破坏它们,以确保墙壁足够坚固。这使得研究人员能够在无需等待人类手动编写每一个测试的情况下,持续用新鲜、高难度的挑战来测试 AI 模型。
技术摘要:AUTOBAXBUILDER
问题陈述
随着大语言模型(LLM)日益集成到软件工程领域,可靠评估 LLM 生成代码的正确性与安全性变得至关重要。先前的研究表明,LLM 经常生成存在安全漏洞的代码,往往为了功能正确性而忽视安全性。现有的评估框架存在三个主要局限性:
- 数据污染:人工构建的基准测试不可避免地会泄露到未来模型的训练数据中,从而损害评估的有效性。
- 可扩展性与延展性:创建新的基准测试需要大量人力来设计场景、编写功能测试以及开发安全漏洞利用程序,这使得其难以跟上快速进步的模型步伐。
- 扩展难度:基准测试必须持续增加难度以挑战更强大的 LLM,而这对人类专家而言是一项资源密集型任务。
当前的基准测试通常将正确性和安全性评估分离为不同任务,或仅关注函数级生成,未能捕捉整个应用程序后端的复杂性。虽然 BAXBENCH 基准测试通过评估端到端 Web 应用程序后端解决了这一问题,但其创建严重依赖人工努力,限制了其持久性和可扩展性。
方法论:AUTOBAXBUILDER
作者提出了 AUTOBAXBUILDER,这是一个自动化的、代理驱动的流水线,能够从零开始引导代码安全基准测试任务的创建。该系统利用 LLM 的代码理解能力,结合基于执行的稳健可靠性检查,在无人为干预的情况下生成场景规范、功能测试以及端到端的安全漏洞利用程序。
该流水线由一个中央 LLM(“协调器”)编排,并针对由“解决方案 LLM"生成的参考解决方案进行验证,通过三个迭代细化步骤运行:
- 场景提案:协调器生成一个新的后端服务规范(采用 OpenAPI 格式),旨在暴露清晰的攻击面。它通过检查现有场景标题来确保新颖性。随后,解决方案 LLM 生成初始参考实现。
- 功能测试生成:协调器提取功能需求并构建功能测试。为确保正确性,流水线采用两阶段细化循环:
- 细化解决方案:基于执行日志修正失败的参考解决方案,协调器不查看测试代码以防止过拟合。
- 细化测试:协调器分析测试代码、解决方案代码与执行日志之间的关系,以确定失败是源于有缺陷的测试还是有缺陷的解决方案。它不断迭代直至达成全局共识,确保至少有一个参考解决方案能通过所有测试。
- 安全漏洞利用生成:协调器识别场景和参考解决方案中的潜在漏洞(CWE)。针对每个目标漏洞,它生成漏洞利用程序,并采用对比方法进行验证:
- 在参考解决方案上运行该漏洞利用程序。
- 如果结果正确(例如,标记了存在漏洞的解决方案),协调器将基于漏洞的自然语言描述(而非漏洞利用逻辑),通过修补漏洞或引入漏洞来生成一个“对比”解决方案。
- 仅当漏洞利用程序能正确区分解决方案的安全版本和不安全版本时,该漏洞利用程序才会被接受。此过程迭代进行,直至找到精确的安全/不安全解决方案对。
该流水线包含防护机制,例如针对 OpenAPI 规范的 YAML 验证、针对代码的 Python 编译检查,以及用于处理 LLM 故障的自我批评机制。
主要贡献
- 自动化基准构建:一种稳健的方法,可遵循 BAXBENCH 的设计原则构建全新的基准测试,且仅需极少的人工干预。
- 针对专家基线的验证:证明了该方法在相同任务上能够复现或超越专家编写功能测试和漏洞利用程序的效果,有效收紧了 BAXBENCH 报告的安全上限。
- AUTOBAXBENCH:构建并发布了一个包含 40 个新颖场景的新基准测试,分为三个难度递增的子集(简单、中等、困难),使代码安全基准测试可用的后端场景数量增加了一倍以上。
实验结果
作者使用广泛的最先进 LLM(包括 GPT-5、Claude 4.5 Sonnet、Gemini 3 Pro 以及各种开源权重模型)对该流水线及由此产生的 AUTOBAXBENCH 基准测试进行了评估。
- 流水线验证:当应用于现有的 BAXBENCH 场景时,AUTOBAXBUILDER 生成的测试和漏洞利用程序与人工编写的表现出高度一致性。具体而言,功能测试在 80.9% 的解决方案上匹配。流水线生成的安全漏洞利用程序比原始人工编写的漏洞利用程序标记了更多不安全实例,这归因于发现了额外的 CWE 和攻击变体。对 71 个生成漏洞利用程序的人工审计仅发现了一个不可靠的漏洞利用程序。
- 基准测试性能:在 AUTOBAXBENCH 上,即使是最强的评估模型(Claude 4.5 Sonnet)的
sec_pass@1(安全且正确的解决方案比率)总体也仅为 36%。在“困难”划分中,这一比例降至 25%。pass@1(功能正确性)与 sec_pass@1 之间的差距凸显了许多功能正确的实现仍然可被利用。
- 效率:该流水线在不到 2 小时内生成新任务,每个任务的 API 成本低于 4 美元。包括人工验证在内,与人工构建相比,这减少了 12 倍的人力投入。
- 稳健性:使用不相交模型集进行构建的消融研究表明,模型性能具有高度的秩相关性(Spearman ρ>0.9),表明该基准测试并未偏向于用于生成它的模型。
意义与主张
该论文声称,AUTOBAXBUILDER 解决了 LLM 安全评估中基准测试污染和可扩展性的关键挑战。通过自动化生成未受污染的高质量基准测试,该框架实现了对 LLM 安全编码能力的长期、可靠评估。
作者强调,他们的方法通过使用基于执行的漏洞利用程序而非静态分析(后者容易产生误报和漏报),提供了可靠的安全上限。他们断言,该框架具有“面向未来”的特性,能够随着模型能力的提升生成日益困难的任务,逐步接近已部署后端 API 的复杂性。该研究得出结论:虽然 LLM 在功能代码生成方面取得了进展,但在可靠生成安全代码的能力上仍存在显著差距,而 AUTOBAXBENCH 有效地揭示了这一差距。
每周获取最佳 computer science 论文。
受到斯坦福、剑桥和法国科学院研究人员的信赖。
请查收邮箱确认订阅。
出了点问题,再试一次?
无垃圾邮件,随时退订。