AI网络挑战赛(AIxCC)赛制解析
竞赛概览
参赛团队需构建AI驱动的全自动网络推理系统(CRS),能够自动识别并修复程序漏洞。CRS在挑战项目中发现和修补漏洞时不得接受任何人工干预。挑战项目基于现实关键软件(如Linux内核、Jenkins自动化服务器)的修改版本。CRS必须提交漏洞证明(PoV)和理解证明(PoU),并可选择提交补丁。评分基于四个组件综合计算:
- 漏洞发现分数:通过PoV触发指定AIxCC检测器获得积分
- 程序修复分数:成功修补漏洞且不破坏正常功能获得积分,通过代码检查器可获得额外奖励
- 准确度乘数:根据提交有效性调整总分,减少无效提交
- 多样性乘数:根据处理的CWE类型和编程语言多样性调整总分
技术挑战项目
挑战项目模拟真实软件环境,包含以下技术组件:
- 支持Java、Rust、Go、JavaScript、TypeScript、Python、Ruby、PHP等多种语言
- 至少50%为包含内存损坏漏洞的C/C++程序
- 包含可修改的构建流程、测试框架和公共功能测试套件
- 基于MITRE Top 25最危险软件弱点列表的漏洞类型
CRS必须通过API使用AI/ML技术和传统程序分析技术,实现漏洞的发现、定位、触发和修补。
评分机制深度分析
评分算法通过复杂公式整合四个评分组件,特别强调:
- 成功修补漏洞获得高额激励,避免团队只关注发现忽略修复
- 准确度乘数惩罚无效提交,确保系统可靠性
- 多样性乘数鼓励处理多类型漏洞和多语言环境
对AIxCC赛制的技术评价
我们认为AIxCC将显著推动自动化漏洞检测与修复的技术发展,其技术先进性体现在:
- 真实环境模拟:基于真实软件和漏洞构建挑战环境
- 多语言支持:支持多种编程语言和计算栈
- 二进制兼容:源代码编译为真实二进制格式
- AI/ML驱动:鼓励解决传统方法无法应对的软件分析问题
技术关切与建议
挑战项目构建问题
历史漏洞训练数据偏差:使用已披露漏洞可能导致基于大型语言模型(LLM)的CRS获得不公平优势,因为这些漏洞可能已包含在ChatGPT、Claude等商业模型的训练数据中。
建议:避免使用合作伙伴提供的商业模型训练周期之前披露的历史漏洞。
项目预先知晓问题:所有挑战项目基于开源项目,团队可进行大规模预分析和模型专门化。
建议:至少65%的挑战项目应在竞赛各阶段前保持保密。
PoU粒度问题
担心评分算法可能因AIxCC检测器过于细化而拒绝有效的PoV/PoU。例如CWE-787、CWE-125、CWE-119等密切相关漏洞类型可能被错误区分。
建议:采用足够粗粒度的检测器避免不公平处罚。
性能评分缺失
当前评分体系未直接考虑性能指标(CPU运行时间、内存开销等),而性能是补丁有效性和可接受性的关键因素。
建议:在功能评分中增加性能组件,确保补丁在现实场景中的可用性。
技术展望
尽管存在上述关切,我们对竞赛的技术价值保持高度期待。后续将分享我们在此领域的前期工作如何影响高层技术方案,并讨论竞赛中最令人兴奋的技术方向。
分享至:Twitter、LinkedIn、GitHub、Mastodon、Hacker News