AIxCC竞赛机制解析:自动化漏洞挖掘与修复的技术挑战

本文深入分析DARPA AIxCC竞赛的技术架构,涵盖自动化网络推理系统构建、多语言漏洞检测、PoV/PoU提交机制、评分算法设计,并针对挑战项目构建、PoU粒度控制、性能评分等关键技术问题提出改进建议。

AIxCC竞赛机制解析:自动化漏洞挖掘与修复的技术挑战

竞赛概览

参赛团队需要构建AI驱动的全自动网络推理系统(CRS),该系统需能够识别并修复程序中的漏洞。CRS在发现和修复挑战项目中的漏洞时不能接受任何人工干预。挑战项目基于现实关键软件(如Linux内核和Jenkins自动化服务器)的修改版本。CRS必须提交漏洞证明(PoV)和理解证明(PoU),并可选择提交补丁。这些组件将分别和综合评分以决定获胜者。

竞赛分为四个阶段:

  • 注册阶段(2024年1月-4月):开放注册通道,提交概念白皮书后,最多7家小企业将获得100万美元资助
  • 练习轮次(2024年3月-7月):系统测试和熟悉阶段
  • 半决赛(2024年8月,DEF CON):前7名团队晋级决赛,各获200万美元奖金
  • 决赛(2025年8月,DEF CON):前三名分别获得400万、300万和150万美元奖金

挑战项目技术细节

挑战项目模拟真实软件环境,具有高度多样性。挑战问题可能包含Java、Rust、Go、JavaScript、TypeScript、Python、Ruby或PHP源代码,但至少一半为包含内存损坏漏洞的C/C++程序。其他漏洞类型来自MITRE Top 25最危险软件弱点列表。

每个挑战问题包含源代码、可修改的构建流程和环境、测试工具链以及公共功能测试套件。CRS必须使用AI/ML和传统程序分析技术,通过API接口发现、定位、触发和修复漏洞。

评分机制技术架构

CRS总评分基于四个技术组件:

  1. 漏洞发现分数:成功触发指定AIxCC净化器的每个PoV获得积分
  2. 程序修复分数:补丁阻止净化器触发且不破坏功能时获得积分,通过代码检查器可获得额外奖励
  3. 准确度乘数:基于提交有效性调整总分,奖励高准确率CRS
  4. 多样性乘数:基于处理的CWE类型和源代码语言多样性调整总分

评分算法鼓励漏洞修复而不仅仅是发现,防止团队只关注检测忽略修补。

技术架构优势与挑战

AIxCC竞赛格式在多个技术层面超越之前的网络大挑战:

  1. 挑战项目基于真实软件和漏洞
  2. 包含源代码并编译为真实二进制格式
  3. 支持多种编程语言和计算栈

竞赛聚焦AI/ML驱动的CRS,有望推动软件分析新方法的研究,突破传统方法因停机问题等基础限制而无法解决的难题。

技术改进建议

挑战项目构建问题

  1. 历史漏洞重用风险:当前方案将已披露漏洞重新注入开源项目,这些漏洞可能已包含在商用LLM(如ChatGPT、Claude)的训练数据中,导致基于这些模型的CRS获得不公平优势。建议避免使用合作伙伴提供的商用模型训练周期前的历史漏洞

  2. 项目预先知晓问题:所有挑战项目基于预先知晓的开源项目,团队可进行大规模预分析并专门优化其LLM、模糊测试器和静态分析器。建议至少65%的挑战项目在竞赛各阶段前保持保密

PoU粒度控制

担心评分算法可能因AIxCC净化器过于细化而拒绝有效的PoV/PoU。例如CWE-787(越界写入)、CWE-125(越界读取)和CWE-119(越界缓冲区操作)都可能有效描述同一漏洞。建议使用足够粗粒度的净化器以避免不公平处罚。

性能评分缺失

当前评分体系未直接考虑性能指标(CPU运行时间、内存开销等),也未纳入补丁功能评分。性能是关键的非功能性需求,也是补丁有效性和可接受性的重要方面。建议在功能评分中加入性能组件,确保补丁在现实场景中的可用性。

技术展望

尽管提出了这些技术关切,我们对3月的正式启动和8月的实际竞赛充满期待。后续文章将讨论我们在此领域的前期工作如何影响高层方法,并探讨竞赛中最令人着迷的技术领域。

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