PatchIsland: Orchestration of LLM Agents for Continuous Vulnerability Repair
PatchIsland 是一个利用多样化 LLM 智能体集成和两阶段去重策略的自治系统,旨在噪声大且易失败的持续模糊测试流水线环境中,有效地编排持续漏洞修复,并在 AIxCC 竞赛中实现了 72.1% 的修复率。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下,互联网是一座完全由代码构成的、繁忙且喧闹的巨大城市。在这座城市中,“模糊测试”(fuzzing)就像是派出成千上万个微小的、混乱的机器人,去撞击墙壁、绊倒电线,并戳向它们能找到的每一个门洞。它们的任务是寻找城市防御中的隐藏裂缝——即黑客可以利用来入侵的软件漏洞。多年来,这些机器人非常擅长寻找裂缝,每年都在开源项目中发现数以千计的安全漏洞。但问题在于:虽然机器人非常擅长找洞,但修复这些洞仍然是一个缓慢的人工过程。这就像你拥有一支能够找出城市里每一个坑洼的机器人军队,但随后你必须雇佣一支工程师团队,坐下来逐一修复每一个坑洼。随着城市规模的扩大,这种人工修复过程成为了一个巨大的瓶颈,导致城市在很长一段时间内处于脆弱状态。这就是“自动化漏洞修复”(Automated Vulnerability Repair)的概念所要解决的问题:尝试构建一个不仅能发现坑洼,还能自动修补它们的系统。
由此诞生了 PatchIsland,一个旨在解决这一问题的全新系统。研究人员意识到,现有的自动化修复工具就像是在安静车库里工作的单人技师;它们是在受控环境下针对单辆汽车进行的测试。但在现实世界的持续模糊测试中,那是一条嘈杂、混乱且不可预测的高速公路,车辆会不断发生故障。为了应对这种情况,团队构建了 PatchIsland,该系统不再像一个孤独的技师,而更像是一个高度组织化的、24/7 全天候运作的维修队。他们在名为 AIxCC(AI 网络挑战赛)的大型竞赛中对其进行了测试,要求它在没有任何人工帮助的情况下完全自主运行一周。结果令人印象深刻:PatchIsland 成功修复了 43 个真实漏洞中的 31 个,达到了 72.1% 的成功率,甚至还修复了流行项目 PDFBox 中一个全新的、从未见过的“零日”(zero-day)漏洞。
问题所在:“一刀切”的陷阱
想象一下,你正在试图修复大坝上的一个泄漏点。你的工具箱里有一个锤子、一个扳手和一个胶枪。如果你只使用锤子,你可能会修好一道裂缝,但如果泄漏的是一根破裂的管道,你就会失败。以往大多数自动化修复系统就像那个锤子:它们被设计为在受控的单次运行测试中完美工作。但在现实世界的持续模糊测试中,“泄漏”是多样化的,环境是混乱的,而且问题会不断发生。依赖单一方法的系统在遇到并非其专门训练过的特定问题时,往往会崩溃或陷入停滞。研究人员发现,这些旧系统根本无法处理持续性、现实世界修复工作的复杂性。
解决方案:多元化专家的团队
为了解决这个问题,团队利用“智能体集成”(ensemble of agents)的概念构建了 PatchIsland。不要把它想成雇佣了一位超级天才技师,而是雇佣了一支由不同领域的专家组成的团队,每个人都拥有不同的超能力。有些智能体擅长阅读代码,有些是寻找特定类型漏洞的专家,有些速度很快但可能有点粗心,而另一些则虽然慢但极其精准。
PatchIsland 不再依赖单个智能体完成所有工作,而是将损坏的代码发送给整个团队。如果一个智能体失败或困惑了,其他智能体会继续工作。这就像是一个消防队,如果其中一辆消防车坏了,其他的车仍能继续灭火。这种多样性使系统更加稳健,这意味着即使单个部分失效,系统也能持续运行。
智能过滤器:避免“重蹈覆辙”
在持续修复系统中,同一个漏洞往往会反复导致同一种崩溃。如果系统尝试修复同一个崩溃 100 次,将会浪费大量的时间和金钱。研究人员引入了一种聪明的“两阶段去重”(two-phase deduplication)策略。
想象一位收到犯罪报告的侦探。在召集整个团队之前,侦探会检查:“这起完全相同的犯罪是否已经被解决?”
- 第一阶段(崩溃检查): 当新的崩溃报告传来时,系统会检查团队生成的补丁是否已经可以修复它。如果是,则忽略该新报告。
- 第二阶段(补丁检查): 如果团队生成了一个新补丁,系统会检查这个新补丁是旧补丁的重复,还是确实修复了新的问题。如果是重复,则将其丢弃;如果更好,则替换旧补丁。
这确保了系统不会在重复修复同一个问题上浪费精力,这在处理数以千计的报告时至关重要。
指挥家:FP2 编排
既然有一个由不同智能体组成的团队,你就需要一个指挥家来决定谁在何时工作以及如何工作。团队开发了一种称为 FP2(先到先得、基于偏好且感知提供者)的策略。
- 先到先得: 一旦补丁准备就绪,它就会被迅速提交。
- 基于偏好: 系统知道哪些智能体通常是寻找正确修复方案的“高手”。它会让这些顶尖智能体优先尝试。如果它们失败了,才会调用其他智能体。这节省了时间和成本。
- 感知提供者: 智能体使用不同的 AI “大脑”(如不同的语言大模型)。系统会分散工作量,确保没有单个 AI 会因为过载或达到速率限制而瘫痪。
这种编排确保了系统的效率,在速度与使用强大 AI 工具的成本之间取得了平衡。
结果:现实世界的试驾
真正的考验来自 AIxCC 决赛,这是一场为期一周的竞赛,参赛队伍必须在没有任何人工干预的情况下,发现并修复 53 个不同的开源项目中的漏洞。
- 得分: PatchIsland 发现并修复了 31 个漏洞,是所有队伍中数量最高的。
- 成功率: 它实现了 72.1% 的成功率(在 43 个确认的漏洞中修复了 31 个)。
- 零日漏洞的胜利: 在一个令人惊叹的时刻,PatchIsland 修复了 PDFBox 项目中的一个全新漏洞。比赛结束后,该项目的维护者采用了系统生成的完全相同的补丁,这证明了 AI 不仅仅是在猜测,它找到了一个真实的、正确的解决方案。
研究人员还指出,虽然该系统非常有效,但并非完美。它确实遇到了一些“单点故障”,例如 systemd 项目中的一个链接中断,导致系统无法针对该特定任务进行初始化。然而,与那些崩溃频率更高的系统相比,PatchIsland 的设计使其能够应对大部分混乱情况。
这为什么重要
PatchIsland 表明,我们正离“软件能够自我愈合”的未来越来越近。通过将多样化的 AI 智能体团队与智能管理和过滤相结合,该系统可以处理持续安全测试中混乱且不可预测的现实情况。这表明,虽然我们目前可能还无法完全实现自动消除所有漏洞,但我们可以构建足够稳健的系统,来应对现代软件面临的漏洞洪流,从而减轻人类专家的负担,让我们的数字城市更加安全。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。