← 最新论文
💻 computer science

ClozeMaster: Fuzzing Rust Compiler by Harnessing LLMs for Infilling Masked Real Programs

本文介绍了 ClozeMaster,这是一种利用大语言模型通过从历史漏洞报告中提取并补全掩码代码片段来合成有效 Rust 测试程序的模糊测试工具,从而在性能上超越现有模糊测试器并发现了 27 个已确认的编译器漏洞。

原作者: Hongyan Gao, Yibiao Yang, Maolin Sun, Jiangchang Wu, Yuming Zhou, Baowen Xu

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

原作者: Hongyan Gao, Yibiao Yang, Maolin Sun, Jiangchang Wu, Yuming Zhou, Baowen Xu

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

想象一下,你有一位非常严格的高端厨师(即 Rust 编译器),他因制作极其安全且快速的菜肴而闻名。这位厨师有一套非常具体的规则:如果你试图按错误顺序放入食材、使用被禁止的香料,或混合不协调的质地,他不仅会说“不行”。有时,你奇怪的请求会让他困惑到打翻整个托盘、尖叫,或完全僵住。这些就是论文中提到的“漏洞”。

问题在于,要 trick 这位厨师非常困难。如果你只是随机向他投掷食材(就像标准的“模糊测试”或自动化测试工具),他通常会无视你,或礼貌地说“顺序无效”。他很少会困惑到崩溃。

这时,ClozeMaster 登场了,这是研究人员提出的新方法。其工作原理如下,使用一个简单的类比:

“疯狂填词”策略

研究人员没有让厨师从零开始猜测你想要什么,而是决定查看过去的错误。他们进入厨师的投诉日志(即“漏洞报告”),找到了那些曾导致厨师崩溃或僵住的食谱。

他们意识到这些“崩溃食谱”具有特殊的结构。它们就像一场疯狂填词游戏(一种填空的文字游戏)。

  1. 掩码(空白处):研究人员选取了一份曾导致厨师崩溃的食谱。他们查看括号、方括号和花括号内的部分(如 ( ){ }[ ]),并用“掩码”(空白)覆盖这些特定部分,同时保持食谱其余部分完整。

    • 类比:想象一份食谱写着:“将面粉与**______**混合后烘烤。”加粗部分即为空白。句子的其余部分(结构)是安全且语法正确的。
  2. AI 填充者(大语言模型):他们使用一个智能 AI(大语言模型)来填充这些空白。但他们并非只是让 AI 随意写一句话。他们首先用所有那些旧的、有问题的食谱“训练”AI,使 AI 学会那种能让 Rust 厨师困惑的代码的特定“风味”。

    • 类比:AI 就像一个研究过厨师每次发怒情况的学生。当被要求填空时,AI 不会只写“糖”;它可能会写出一些奇怪的内容,比如“一只活章鱼”,因为它知道厨师会对奇怪的组合感到困惑。
  3. 结果:由于食谱的结构是完美的(基于真实且可运行的食谱),厨师接受了它。但由于填充部分奇怪且复杂,厨师感到困惑并崩溃。这就揭示了一个新漏洞。

为何需要此方法

研究人员发现,Rust 就像一种拥有非常复杂语法规则的语言。

  • 旧方法就像蒙着眼睛向靶盘投掷飞镖。由于规则过于严格,它们很少能击中靶心(即漏洞)。
  • 直接 AI 生成就像让学生在不参考任何示例的情况下从零开始写食谱。学生(AI)对 Rust 的严格规则了解不足,写出的内容厨师会立即拒绝。
  • ClozeMaster 则像是给学生一份部分写好的复杂食谱,只要求他们完成一个棘手的句子。学生了解上下文,因此写出的内容既符合规则,又足够奇怪,足以让厨师崩溃。

他们的发现

团队构建了一个名为 ClozeMaster 的原型工具,并在两个版本的 Rust 厨师(官方版本和社区自制版本)上进行了测试。

  • 他们发现了 37 个新漏洞(崩溃或僵住),此前无人见过。
  • 开发人员确认了其中 27 个,并修复了 10 个
  • 与之前的最佳工具相比,他们的工具在发现这些漏洞和探索厨师的“厨房”(代码覆盖率)方面表现更优。

核心结论

该论文声称,通过旧的、有问题的代码,隐藏其特定部分,并利用 AI 填充这些部分,他们可以创建新的、棘手的测试,从而暴露 Rust 编译器中隐藏的弱点。这是一种利用历史来预测未来错误可能藏身之处的方法。

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

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

试用 Digest →