2025-11-12T23:04:10.380766

LLMs are All You Need? Improving Fuzz Testing for MOJO with Large Language Models

Huang, Zhao, Chen
The rapid development of large language models (LLMs) has revolutionized software testing, particularly fuzz testing, by automating the generation of diverse and effective test inputs. This advancement holds great promise for improving software reliability. Meanwhile, the introduction of MOJO, a high-performance AI programming language blending Python's usability with the efficiency of C and C++, presents new opportunities to enhance AI model scalability and programmability. However, as a new language, MOJO lacks comprehensive testing frameworks and a sufficient corpus for LLM-based testing, which exacerbates model hallucination. In this case, LLMs will generate syntactically valid but semantically incorrect code, significantly reducing the effectiveness of fuzz testing. To address this challenge, we propose MOJOFuzzer, the first adaptive LLM-based fuzzing framework designed for zero-shot learning environments of emerging programming languages. MOJOFuzzer integrates a mutil-phase framework that systematically eliminates low-quality generated inputs before execution, significantly improving test case validity. Furthermore, MOJOFuzzer dynamically adapts LLM prompts based on runtime feedback for test case mutation, enabling an iterative learning process that continuously enhances fuzzing efficiency and bug detection performance. Our experimental results demonstrate that MOJOFuzzer significantly enhances test validity, API coverage, and bug detection performance, outperforming traditional fuzz testing and state-of-the-art LLM-based fuzzing approaches. Using MOJOFuzzer, we have conducted a first large-scale fuzz testing evaluation of MOJO, uncorvering 13 previous unknown bugs. This study not only advances the field of LLM-driven software testing but also establishes a foundational methodology for leveraging LLMs in the testing of emerging programming languages.
academic

LLMはすべてですか?大規模言語モデルを用いたMOJOのファジングテスト改善

基本情報

  • 論文ID: 2510.10179
  • タイトル: LLMs are All You Need? Improving Fuzz Testing for MOJO with Large Language Models
  • 著者: Linghan Huang、Peizhou Zhao、Huaming Chen(シドニー大学)
  • 分類: cs.SE(ソフトウェアエンジニアリング)、cs.AI(人工知能)
  • 発表日時: 2025年10月11日(arXiv プレプリント)
  • 論文リンク: https://arxiv.org/abs/2510.10179

要約

大規模言語モデル(LLM)の急速な発展により、多様で効果的なテスト入力の自動生成を通じてソフトウェアテスト、特にファジングテストが革新されています。同時に、Pythonの使いやすさとC/C++の効率性を融合させた高性能AI プログラミング言語としてのMOJOの登場は、AIモデルのスケーラビリティとプログラマビリティを強化する新たな機会を提供しています。しかし、新興言語として、MOJOは包括的なテストフレームワークと十分なLLM訓練コーパスが不足しており、これがモデルの幻覚問題を悪化させています。この課題に対応するため、本論文はMOJOFuzzerを提案します。これは新興プログラミング言語のゼロショット学習環境向けに設計された初の適応的LLMファジングテストフレームワークです。実験結果は、MOJOFuzzerがテスト有効性、API カバレッジ、および誤り検出性能において従来のファジングテストと最先端のLLM ベースのファジングテスト手法を大幅に上回り、MOJOで13個の未知の誤りを発見することに成功したことを示しています。

研究背景と動機

核心的課題

本研究が解決する核心的課題は、新興プログラミング言語のファジングテストの課題、特に十分な訓練データが不足するゼロショット学習環境において効果的にテストを実施する方法です。

問題の重要性

  1. AI開発の需要: 自動運転、医療診断、金融サービスなどの重要分野でのAIの広範な応用に伴い、効率的なプログラミング言語のサポートが必要
  2. MOJO言語の可能性: MOJOはPythonより68,000倍高速なパフォーマンス向上を実現でき、AI開発の重要なツール
  3. テストフレームワークの欠落: 新興言語として、MOJOは成熟したテストフレームワークが不足しており、未発見のソフトウェア誤りとセキュリティ脆弱性が存在

既存手法の限界

  1. 従来のLLMファジングテスターは大量の領域固有の訓練データに依存しており、新興言語への応用を制限
  2. モデル幻覚問題: ゼロショット環境では、LLMは構文的に正しいが意味的に誤ったコードを生成しやすい
  3. 特異性の欠落: 既存ツールはMOJO言語の特性に特別に最適化されていない

研究動機

MOJO言語専用の初のLLMファジングテストフレームワークを開発し、革新的なプロンプトエンジニアリングと微調整技術を通じて、ゼロショット学習環境で効果的な誤り検出を実現する。

核心的貢献

  1. 初のゼロショットLLMファジングテストフレームワーク: MOJOFuzzerはゼロショット学習環境向けに設計された初のLLM駆動ファジングテストフレームワークであり、LLMの幻覚問題を効果的に緩和
  2. 多段階品質制御メカニズム: 低品質入力の体系的なフィルタリングメカニズムを統合し、テストケースの有効性を大幅に向上
  3. 適応的変異戦略: 実行時フィードバックに基づいてLLMプロンプトを動的に調整し、反復学習プロセスを実現
  4. 実際の誤り発見: MOJOで13個の未知の誤りを発見することに成功し、そのうち9個は公式に確認され修正
  5. パフォーマンスの大幅な向上: テスト有効性(98%)、APIカバレッジ(77.3%)、および誤り検出能力において既存手法を大幅に上回る

方法の詳細説明

タスク定義

入力: MOJOプログラミング言語環境と限定的な構文規則、履歴誤りレポート 出力: MOJOの誤りをトリガーできる有効なテストケース 制約条件: ゼロショット学習環境、大量のMOJO固有訓練データなし

モデルアーキテクチャ

全体フレームワーク

MOJOFuzzerは以下のコアコンポーネントを含む多段階アーキテクチャを採用:

  1. データ準備段階
    • GitHubと公式ドキュメントから約300個の誤りレポートと1,500個の構文サンプルを収集
    • データクリーニングと標準化処理
  2. 初期化段階
    • プロンプトバンク(Prompt Bank): 構造化プロンプトテンプレートを保存
    • シードバンク(Seed Bank): テストシードの生成と保存を管理
  3. 変異戦略
    • 変異スコアリングメカニズム: API呼び出し数とコード複雑度に基づいてスコアを計算
    • 半変異(Half Mutation): 高スコアシードに対するコードレベルの変異
    • 全変異(Full Mutation): 低スコアシードに対するプロンプトレベルの変異

主要な技術詳細

変異スコアリング公式:

S_mutation = N_API + C_complexity

ここで:

  • N_API: API呼び出し数
  • C_complexity: コード複雑度スコア(時間複雑度O(1)からO(n³)に異なるスコアを割り当て)

プロンプトエンジニアリング戦略: チェーンオブソート(CoT)とロールプロンプト技術を採用し、5つのコアコンポーネントを含む:

  1. 構文分析指示
  2. ロールベースのフレームワーク
  3. 自動データフィルタリング
  4. コンテンツ要約
  5. プロンプトシード生成

微調整戦略

LLAMA2 13Bモデルを使用した2段階微調整:

  1. 第1段階: MOJO構文データセットに基づいて言語構造を学習
  2. 第2段階: 履歴誤りレコードに基づいて欠陥パターンを学習

技術的革新点

  1. ゼロショット適応性: 大量の訓練データがない状況で初めて効果的なLLMファジングテストを実現
  2. 二層変異メカニズム: コードレベルとプロンプトレベルの変異を組み合わせ、テストの多様性を向上
  3. 適応的スコアリングシステム: シード品質を動的に評価し、リソース配分を最適化
  4. 多段階品質制御: 低品質入力を体系的にフィルタリングし、幻覚問題を削減

実験設定

データセット

  • MOJO構文データ: 約1,500個の構文規則とコード例
  • 履歴誤りレポート: GitHubからの約300個の誤りレコード
  • テスト環境: MOJOコンパイラと実行時環境

評価指標

  1. 一意の有効プログラム数: 構文的および意味的に正しいテストプログラムの割合
  2. 変異効率: テストの多様性、有効性、および誤り検出能力の改善
  3. APIカバレッジ: テスト中に呼び出される一意のMOJO API関数の数
  4. 検出誤り数: 発見された異なるソフトウェア欠陥の数

比較手法

  • 従来の手法: MojoCoder
  • LLMファジングテスター: Fuzz4All、TitanFuzz
  • 汎用LLM: GPT-4o、LLAMA3-8B、LLAMA2-7B

実装詳細

  • ハードウェアプラットフォーム: NVIDIA A6000 Ada
  • 微調整技術: LoRA(Low-Rank Adaptation)
  • 最大反復回数: 10ラウンド
  • 変異閾値: スコア50を半変異/全変異の分界点として使用

実験結果

主要結果

APIカバレッジ比較

モデルAPIカバレッジ
MOJOFuzzer77.3%
Fine-tuned MojoCoder68.2%
Fuzz4All37.8%
TitanFuzz17.2%
GPT-4o25.6%

有効プログラム生成率

モデル有効プログラム率
MOJOFuzzer98%
Mojo-Coder-it 7B66.4%
GPT-4o~25%
LLaMA3-8B~10%
LLaMA2-7B~10%

誤り検出能力

  • 総発見誤り: 13個の未知の誤り
  • 確認済み修正: 9個の誤りがMOJOチームにより確認され修正
  • 誤りタイプ: 乱数生成器の欠陥、Pythonライブラリ統合の問題を含む

アブレーション実験

アブレーション研究は3つの主要コンポーネントの貢献を評価:

コンポーネント構成幻覚率有効コード率意味的正確性
ベースライン40%60%50%
プロンプトエンジニアリングのみ(PE)28%75%65%
微調整のみ(FT)15%88%78%
半変異のみ(HM)35%68%55%
PE + FT8%95%88%
PE + FT + HM(全部)5%98%90%

ケース分析

発見された主要な誤りの例:

  1. 乱数生成器の誤り:
    • random_si64random_float64random_ui64関数は常に固定値を返す
    • 乱数生成の正確性に影響
  2. Pythonライブラリ統合の誤り:
    • numpy関数呼び出し時にモジュール取得失敗が発生
    • MOJOとPythonライブラリ統合の基層ロジック誤りを示す

実験の発見

  1. 微調整の重要な役割: 微調整は幻覚問題を削減する最も効果的な単一要因
  2. コンポーネント間の相乗効果: 3つのコンポーネントを組み合わせて使用する場合に最良の効果
  3. ゼロショット学習の実現可能性: 大量の訓練データがない状況での効果的なテストの可能性を証明

関連研究

LLMファジングテストの発展

  1. LLMベースのファジングテスター: TitanFuzz、ChatAFL、Fuzz4Allなどはシード生成と変異を改善するためにLLMを利用
  2. 微調整ファジングテスター: FuzzGPTなどは領域固有データによる微調整を通じて効果を向上
  3. 従来のファジングテスト: OSS-Fuzzなどの従来ツールの新興言語への限界

本論文の利点

既存研究と比較して、MOJOFuzzerの主要な利点:

  1. ゼロショット能力: 大量の事前訓練データが不要
  2. 二層変異: コードとプロンプトレベルの両方で変異を実施
  3. 適応的メカニズム: 実行時フィードバックに基づいて戦略を動的に調整

結論と考察

主要な結論

  1. MOJOFuzzerは新興プログラミング言語のファジングテストの課題を成功裏に解決
  2. ゼロショットLLMファジングテストは実際の応用で実現可能
  3. 微調整、プロンプトエンジニアリング、適応的変異を組み合わせた手法は単一技術を大幅に上回る

限界

  1. 時間的有効性の脅威: 高度なLLMが段階的にMOJO知識を統合するにつれ、ゼロショット優位性が減弱する可能性
  2. データ依存性: 最小限の構文規則と誤りレポートが依然として必要
  3. 計算リソース要件: 微調整と推論プロセスは高い計算コストが必要

将来の方向性

  1. 完全自動化テスト: 完全に自動化されたファジングテストへの発展
  2. より多くの新興言語: 他の新興プログラミング言語への方法の拡張
  3. 事前訓練データセット最適化: 限定的な訓練データをより効果的に活用する方法の研究

深層評価

長所

  1. 革新性が強い: 新興言語向けのゼロショットLLMファジングテストフレームワークとしては初
  2. 実用価値が高い: 13個の実際の誤りを発見し、方法の有効性を証明
  3. 技術ソリューションが完全: データ収集から誤り検出までの完全なパイプライン
  4. 実験が充分: 包括的な比較実験とアブレーション研究を含む
  5. 記述が明確: 技術詳細の説明が正確で、実験設計が合理的

不足点

  1. 評価範囲が限定的: 主にMOJO言語に焦点を当てており、汎化能力の検証が必要
  2. ベースライン比較: 一部のベースライン手法が最適な選択ではない可能性
  3. 長期的有効性: MOJOエコシステムの成熟に伴い、方法の優位性が減弱する可能性
  4. 計算コスト分析: 詳細な計算リソース消費分析が不足

影響力

  1. 学術的貢献: 新興言語テストに重要な方法論的基礎を提供
  2. 実践的価値: MOJO言語の改善を直接支援し、即座の影響を持つ
  3. 再現性: 著者がコードとデータのオープンソース化を約束し、後続研究を促進
  4. 領域推進: 新興技術に対するAIテスト手法の増加を触発する可能性

適用シナリオ

  1. 新興プログラミング言語: 成熟したテストフレームワークが不足する言語
  2. ゼロショットテスト環境: 訓練データが稀少なテストシナリオ
  3. AIシステムテスト: 効率的なテストツールが必要なAI開発環境
  4. 安全関键システム: 潜在的な誤りを発見する必要がある重要なアプリケーション

参考文献

論文は58篇の関連文献を引用しており、LLM、ファジングテスト、ソフトウェアエンジニアリングなど複数の領域の重要な研究をカバーし、研究に堅実な理論的基礎を提供しています。


総合評価: これは高品質のソフトウェアエンジニアリング研究論文であり、実際の問題に対して革新的なソリューションを提案し、実験設計が厳密で結果が説得力があります。この研究は技術的な突破だけでなく、新興技術のテストに対して実行可能な方法論を提供することが重要であり、学術的および実践的価値が重要です。