← 最新の論文
💻 computer science

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

本論文は、過去のバグ報告からマスクされたコードスニペットを抽出して埋め込むことで大規模言語モデルを活用し、有効なRustテストプログラムを合成するファジングツール「ClozeMaster」を紹介するものであり、既存のファジングツールを上回る性能を発揮し、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 コンパイラ)を想像してください。このシェフは、驚くほど安全で高速な料理を作ることで有名です。このシェフには非常に特定のルールがあります:材料を間違った順序で入れようとした場合、禁止されたスパイスを使おうとした場合、あるいは互いに合わない食感を混ぜようとした場合、シェフは単に「ダメ」と言うだけではありません。時には、あなたの奇妙な注文にあまりにも混乱して、トレイを落としたり、叫んだり、完全に凍りついたりします。これらが、この論文で議論されている「バグ」です。

問題は、このシェフをだますのが非常に難しいということです。単にランダムな材料を投げつけても(標準的な「ファズャー」や自動テストのように)、彼らは通常、あなたを無視するか、丁寧に「順序が無効です」と言うだけです。彼らが混乱してクラッシュするほどになることはめったにありません。

ここで登場するのが、研究者たちが提案した新しい手法ClozeMasterです。その仕組みを、簡単な比喩を使って説明します。

「マッドリブス」戦略

研究者たちは、シェフにゼロから何を望んでいるかを推測させるのではなく、過去の失敗に目を向けることにしました。彼らはシェフの苦情ログ(「バグレポート」)に入り込み、以前にシェフをクラッシュさせたり凍りつかせたりしたレシピを見つけました。

彼らは、これらの「クラッシュレシピ」には特別な構造があることに気づきました。それらは、空欄を埋める言葉遊びであるマッドリブスのようなものでした。

  1. マスキング(空欄):研究者たちは、シェフをクラッシュさせたことのあるレシピを取り上げました。彼らは括弧 ( )、中括弧 { }、角括弧 [ ] などの内部にある部分を調べ、それらの特定の部分を「マスク」(空白)で覆い、レシピの残りの部分はそのままにしました。

    • 比喩:「小麦粉を**______**と混ぜて焼く」というレシピを想像してください。太字の部分が空白です。残りの文(構造)は安全で文法的に正しいものです。
  2. AI による埋め込み(LLM):彼らは、その空白を埋めるために、賢い AI(大規模言語モデル)を使用しました。しかし、AI に単にランダムな文章を書かせたわけではありませんでした。まず、AI をそれらの古い壊れたレシピすべてで「訓練」し、AI が Rust シェフを混乱させる特有の「風味」のコードを学習させました。

    • 比喩:AI は、シェフが怒ったすべての瞬間を勉強してきた学生のようなものです。空白を埋めるよう求められたとき、AI は単に「砂糖」と書くのではなく、「生きたタコ」のような奇妙なものを書くかもしれません。なぜなら、AI はシェフが奇妙な組み合わせに混乱することを知っているからです。
  3. 結果:レシピの構造が完璧だったため(実際に機能するレシピに基づいていたため)、シェフはそれを受け入れました。しかし、埋め込まれた部分が奇妙で複雑だったため、シェフは混乱してクラッシュしました。これにより、新しいバグが明らかになりました。

なぜこれが必要だったのか

研究者たちは、Rust は非常に複雑な文法規則を持つ言語のようなものであると発見しました。

  • 古い手法は、目隠しをして的に向かってダーツを投げるようなものでした。ルールが厳しすぎるため、的の中心(バグ)に命中することはめったにありませんでした。
  • 直接 AI 生成は、学生に例を一切見せずにゼロからレシピを書かせるようなものでした。学生(AI)は Rust の厳格なルールについて十分に知らず、シェフが即座に拒絶する nonsensical な文章を書いてしまいました。
  • ClozeMasterは、学生に部分的に書かれた複雑なレシピを与え、ただ一つの難しい文を完成させるよう求めるようなものでした。学生は文脈を知っていたため、ルールに適合しつつも、シェフを壊すのに十分なほど奇妙なものを記述することができました。

彼らが発見したもの

チームはClozeMasterというプロトタイプツールを構築し、Rust シェフの 2 つのバージョン(公式版とコミュニティ製版)でテストしました。

  • 彼らは、これまで誰も見たことのない37 の新しいバグ(クラッシュまたは凍結)を発見しました。
  • 開発者はそのうち27 件を確認し、10 件を修正しました。
  • 彼らのツールは、以前の最高水準のツールよりも、これらのバグを発見し、シェフの「キッチン」(コードカバレッジ)を探索する能力がはるかに優れていました。

結論

この論文は、古い壊れたコードを取り、その特定の部分を隠し、AIを使ってそれらの部分を埋めることで、Rust コンパイラの隠された弱点を露呈させる新しい厄介なテストを作成できると主張しています。これは、歴史を利用して将来のミスがどこに潜んでいるかを予測する方法です。

自分の分野の論文に埋もれていませんか?

研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。

Digest を試す →