← 最新论文
💻 computer science

MAS-SZZ: Multi-Agentic SZZ Algorithm for Vulnerability-Inducing Commit Identification

本文提出 MAS-SZZ,一种多智能体算法,该算法利用协同智能体与结构化提示,通过总结根本原因并自主追溯代码历史,准确识别引发漏洞的提交,其性能显著优于现有 SZZ 方法,F1 分数提升高达 65.22%。

原作者: Sicong Cao, Jinxuan Xu, Le Yu, Jing Yang, Xingwei Lin, Linlin Zhu, Fu Xiao

发布于 2026-04-28
📖 1 分钟阅读☕ 轻松阅读

原作者: Sicong Cao, Jinxuan Xu, Le Yu, Jing Yang, Xingwei Lin, Linlin Zhu, Fu Xiao

原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明

想象你是一名侦探,正在一座庞大且不断变化的城市中调查一起犯罪。“犯罪”是软件漏洞(安全缺陷),“案发现场”是最近被修复的一段特定代码。你的目标是找到“漏洞诱导提交(VIC)”:即开发者最初意外引入该 bug 的确切历史时刻。

这就是SZZ 算法的工作。它就像一名穿越时空的侦探,审视“修复”记录,并试图逆着城市的历史回溯,以找出最初的错误。

然而,老派侦探(之前的 SZZ 算法)往往工作不力。他们常犯两个大错:

  1. 错误的线索:他们选错了要调查的代码行。有时他们关注的是仅仅被移动或重命名的代码(就像移动路牌),而非真正导致问题的代码。
  2. 过早放弃:他们的调查停止得太早。他们可能找到一个与修复记录“相似”的提交就止步不前,从而错过了多年前真正埋下问题隐患的那个实际提交。

登场:MAS-SZZ——侦探团队

本文的作者创建了MAS-SZZ(多智能体 SZZ)。他们不再依赖一名孤胆侦探,而是组建了一支由专业 AI 智能体构成的团队,像一支高科技特警队那样协同破案。

以下是该团队的运作步骤:

1. 审计员(法医分析师)

首先,团队查看“犯罪报告”(CVE 描述)和“修复报告”(修复 bug 的代码)。

  • 他们做什么:审计员总结 bug 发生的确切原因。关键在于,他们不只是猜测,而是引用报告中的具体证据来支持每一项主张。
  • 核查:“法官”智能体会双重检查审计员的工作。如果审计员出现逻辑错误或无法为某项主张找到证据,法官会将其退回重做。这确保团队从一个经过验证的坚实犯罪理论开始。

2. 审查员与定位器(目标专家)

既然已经知道“犯罪”是什么,他们就需要找到用于追溯的具体证据。

  • 问题:“修复”记录中通常包含大量噪音——仅仅是清理、重命名或为新增功能而添加的代码。
  • 解决方案审查员会阅读修复中的每一项变更,并询问:“开发者的意图是什么?”他们会过滤掉“噪音”(如代码重构),仅保留那些真正修复了安全漏洞的变更。
  • 定位器:一旦找到相关变更,定位器就会 pinpoint 出作为“铁证”的确切代码行。这将成为锚定语句

3. 追踪器(时空旅行者)

这是最关键的部分。追踪器拿着那个“锚定语句”,开始逆着城市的历史(代码仓库)回溯。

  • 他们怎么做:追踪器不是退一步就停止,而是持续前行。在每一步,他们都会问:"bug 还存在吗?”
  • 停止信号:他们持续回溯,直到找到 bug 尚未存在 的代码版本。紧随其后的那个提交(即 bug 首次出现的提交)被宣布为罪魁祸首。
  • 为何更优:旧算法常因代码看起来“不同”(相似度下降)而停止。追踪器忽略代码外观的差异,纯粹关注漏洞是否存在。

结果:更出色的侦探

作者利用两个大型数据集的真实世界数据,将这支新团队与其他七种“侦探”算法进行了测试。

  • 得分:在这些算法的世界里,"F1 分数”就像最终成绩,它平衡了找出所有坏蛋的能力(召回率)和不冤枉无辜者的能力(精确率)。
  • 胜利:MAS-SZZ 不仅仅是略胜一筹,而是彻底碾压了竞争对手。与最佳的前序方法相比,其最终得分提升了高达65.22%
  • 启示:通过利用一个能够验证证据、过滤噪音并持续回溯直至找到真正源头的 AI 智能体团队,MAS-SZZ 在寻找软件漏洞根本原因方面,比以往任何方法都更加可靠。

简而言之,MAS-SZZ 将笨拙的单人搜索转变为协调一致、基于证据的调查,极少会错过真正的罪魁祸首。

您所在领域的论文太多了?

获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。

试用 Digest →