Featured image of post DARPA AIxCC竞赛:自动化漏洞挖掘与修复的技术挑战

DARPA AIxCC竞赛:自动化漏洞挖掘与修复的技术挑战

本文深入分析DARPA AI网络挑战赛(AIxCC)的技术细节,包括竞赛结构、挑战项目设计、评分机制,以及基于AI的自动化网络推理系统在漏洞发现与修复中的技术实现与挑战。

我们对AIxCC竞赛形式的看法 - Trail of Bits博客

Michael Brown
2024年1月18日
aixcc, darpa, events, machine-learning

上个月底,DARPA正式开启了其AI网络挑战赛(AIxCC)的注册。作为庆祝活动的一部分,DARPA还发布了一些备受期待的竞赛信息:一份包含示例挑战问题和评分方法的征求意见稿(RFC)。此前DARPA发布的规则文件和FAQ描绘了竞赛的大致轮廓,但通过这次发布,一些更精细的细节开始显现。

对于那些没有时间仔细阅读迄今为止提供的50多页信息的人,以下是竞赛结构的快速概述以及我们的看法,包括我们认为需要改进或澄清的领域。

AIxCC是DARPA的一项重大挑战,延续了网络大挑战和无人驾驶大挑战的传统。

免责声明:AIxCC的规则和评分方法可能会有变化。本摘要仅供我们的读者了解,并非权威文件。有兴趣参加AIxCC的人应参考DARPA的网站和官方文件获取第一手信息。

竞赛概览

参赛团队的任务是构建AI驱动的全自动网络推理系统(CRS),能够识别和修补程序中的漏洞。CRS在发现和修补挑战项目中的漏洞时不能接受任何人工协助。挑战项目是现实世界关键软件的修改版本,如Linux内核和Jenkins自动化服务器。CRS必须提交漏洞证明(PoV)和理解证明(PoU),并可以为每个发现的漏洞提交补丁。这些组件分别和共同评分,以确定获胜的CRS。

竞赛分为四个阶段:

  • 注册(2024年1月-4月):开放和小型企业注册通道开放注册。在提交概念白皮书后,最多七家小型企业将被选中获得100万美元的奖金,以资助他们参加AIxCC。
  • 练习轮(2024年3月-7月):练习和熟悉轮次让参赛者实际测试他们的系统。
  • 半决赛(2024年8月,DEF CON):在第一轮比赛中,前七支队伍晋级决赛,每支队伍获得200万美元奖金。
  • 决赛(2025年8月,DEF CON):在总决赛中,表现最好的前三名CRS分别获得400万、300万和150万美元的奖金。

图1:AIxCC活动概览

挑战项目

每个团队的CRS必须处理的挑战项目模拟了现实世界的软件,并且非常多样化。挑战问题可能包括用Java、Rust、Go、JavaScript、TypeScript、Python、Ruby或PHP编写的源代码,但至少一半将是包含内存损坏漏洞的C/C++程序。参赛者应该预料到的其他类型漏洞将来自MITRE的25个最危险软件弱点。

挑战问题包括源代码、可修改的构建过程和环境、测试工具以及公共功能测试套件。使用这些资源的API,参赛CRS必须采用各种类型的AI/ML和传统程序分析技术来发现、定位、触发和修补挑战问题中的漏洞。为了得分,CRS必须提交PoV和PoU,并可以提交补丁。PoV是一个输入,将通过提供的测试工具之一触发漏洞。PoU必须指定PoV将触发哪些清理器和工具(即漏洞类型,可能是一个CWE编号)以及构成漏洞的代码行。

RFC包含一个示例挑战问题,该问题将2021年披露的一个漏洞重新引入Linux内核。提供的挑战问题示例是一个用C编写的单一函数,具有基于堆的缓冲区溢出漏洞和随附的示例补丁。不幸的是,这个示例没有附带示例模糊测试工具、测试套件或构建工具。DARPA计划在未来发布更多带有更多细节的示例,首先是从Jenkins自动化服务器开始的新示例挑战问题。

评分

每个参赛CRS将获得一个总分,该分数是四个组件的函数计算得出:

  • 漏洞发现分数:每个触发随附PoU中指定的AIxCC清理器的PoV都会获得分数。
  • 程序修复分数:如果随附PoV/PoU的补丁阻止AIxCC清理器触发并且不破坏预期功能,则会获得分数。如果补丁通过代码检查器而没有错误,则会获得小额奖励。
  • 准确性乘数:这将乘以总分,以奖励准确性高的CRS(即最小化无效或拒绝的PoV、PoU和补丁)。
  • 多样性乘数:这将乘以总分,以奖励处理不同CWE集和源代码语言的CRS。

评分算法如何组合这些组件涉及许多复杂性。例如,成功修补发现的漏洞会受到高度激励,以防止参赛者只专注于漏洞发现而忽略修补。如果你对详细的数学感兴趣,请查看RFC评分以获取详细信息。

对AIxCC形式RFC的一般看法

总的来说,我们认为AIxCC将显著推动自动化漏洞检测和修复的技术水平。这种竞赛形式在网络大挑战的基础上迈出了一大步,更具现实性,原因有几个——即挑战问题1)由现实世界的软件和漏洞制成,2)包括源代码并编译为现实世界的二进制格式,以及3)涉及许多不同计算栈的多种不同源代码语言。

此外,我们认为本次竞赛对AI/ML驱动的CRS的关注将通过鼓励新的软件分析方法来解决传统方法无法解决的问题(由于诸如停机问题等基本限制),从而帮助创建新的研究领域。

我们在RFC回应中提出的担忧

DARPA通过发布RFC征求了对其评分算法和示例挑战的反馈。我们在本月早些时候回应了他们的RFC,并强调了我们开始构建系统时最关心的几个问题。我们希望未来几个月能带来澄清或变化以解决这些担忧。

挑战问题的构建

我们有两个与挑战问题相关的主要担忧。首先,挑战似乎是通过将先前披露的漏洞重新注入开源项目的最新版本来构建的。这种方法,特别是对于那些在博客文章中详细解释的漏洞,几乎肯定包含在商业大型语言模型(LLM)(如ChatGPT和Claude)的训练数据中。

鉴于它们的高记忆带宽,基于这些模型的CRS在检测和修补这些漏洞时将比其他方法具有不公平的优势。结合LLM在问题新实例上表现明显较差的事实,这强烈表明在AIxCC中得分高的基于LLM的CRS在竞赛之外使用时可能会遇到困难。因此,我们建议DARPA不要使用在合作伙伴提供的商业模型训练时期之前披露的历史漏洞来创建竞赛的挑战问题。

其次,似乎所有挑战问题都将使用开源项目创建,这些项目将在竞赛前为参赛者所知。这将允许团队进行大规模预分析,并将其LLM、模糊测试器和静态分析器专门针对已知的源项目及其历史漏洞。这些CRS将过于特定于竞赛,可能无法在不同的源项目上使用,而无需大量手动工作来重新定位CRS。为了解决这个潜在问题,我们建议至少65%的挑战问题应为在竞赛每个阶段之前保密的源项目制作。

PoU粒度

我们担心如果AIxCC清理器过于细化,评分算法可能会拒绝有效的PoV/PoU。例如,CWE-787(越界写入)、CWE-125(越界读取)和CWE-119(越界缓冲区操作)都列在MITRE前25个弱点报告中。所有三个都可能有效描述挑战问题中的单个漏洞,并在CWE数据库中交叉列出。如果为每个这些CWE提供了多个清理器,但只有一个被认为是正确的,那么 otherwise有效的提交可能会因为未能正确区分三个非常密切相关的清理器而被拒绝。我们建议AIxCC清理器足够粗粒度,以避免对提交的PoU进行不公平的惩罚。

评分

按目前设计,性能指标(例如CPU运行时间、内存开销等)并未直接纳入竞赛的优秀领域,也未纳入补丁的功能分数。性能是关键的非功能性软件要求,也是补丁有效性和可接受性的重要方面。我们认为参赛CRS生成的补丁将程序性能维持在可接受的阈值内非常重要。如果在评分中没有考虑这一点,团队可能会提交有效且正确但最终性能如此之差以至于在现实世界场景中不会被使用的补丁。我们建议竞赛的功能分数增加一个性能组件。

下一步是什么?

尽管我们在RFC回应中提出了一些担忧,但我们非常期待3月份的正式启动以及今年8月的实际竞赛。请关注我们本系列的下一篇文章,我们将讨论我们之前在该领域的工作如何影响了我们的高级方法,并讨论本次竞赛中最吸引我们的技术领域。

如果你喜欢这篇文章,请分享: Twitter LinkedIn GitHub Mastodon Hacker News

页面内容 竞赛概览 挑战项目 评分 对AIxCC形式RFC的一般看法 我们在RFC回应中提出的担忧 挑战问题的构建 PoU粒度 评分 下一步是什么? 近期文章 非传统创新者奖学金 在你的PajaMAS中劫持多代理系统 我们构建了MCP一直需要的安全层 利用废弃硬件中的零日漏洞 Inside EthCC[8]:成为智能合约审计员 © 2025 Trail of Bits. 使用Hugo和Mainroad主题生成。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计