[論文レビュー] Fuzzing BusyBox: Leveraging LLM and Crash Reuse for Embedded Bug Unearthing
本論文では、BusyBoxのファズィング用のLLM生成シード入力と派生バリアント間のクラッシュ再利用という2つの手法を紹介し、最新バージョンを含む BusyBoxターゲットで検証しています。
BusyBox, an open-source software bundling over 300 essential Linux commands into a single executable, is ubiquitous in Linux-based embedded devices. Vulnerabilities in BusyBox can have far-reaching consequences, affecting a wide array of devices. This research, driven by the extensive use of BusyBox, delved into its analysis. The study revealed the prevalence of older BusyBox versions in real-world embedded products, prompting us to conduct fuzz testing on BusyBox. Fuzzing, a pivotal software testing method, aims to induce crashes that are subsequently scrutinized to uncover vulnerabilities. Within this study, we introduce two techniques to fortify software testing. The first technique enhances fuzzing by leveraging Large Language Models (LLM) to generate target-specific initial seeds. Our study showed a substantial increase in crashes when using LLM-generated initial seeds, highlighting the potential of LLM to efficiently tackle the typically labor-intensive task of generating target-specific initial seeds. The second technique involves repurposing previously acquired crash data from similar fuzzed targets before initiating fuzzing on a new target. This approach streamlines the time-consuming fuzz testing process by providing crash data directly to the new target before commencing fuzzing. We successfully identified crashes in the latest BusyBox target without conducting traditional fuzzing, emphasizing the effectiveness of LLM and crash reuse techniques in enhancing software testing and improving vulnerability detection in embedded systems. Additionally, manual triaging was performed to identify the nature of crashes in the latest BusyBox.
研究の動機と目的
- 実世界の組み込みデバイスにおけるBusyBoxの派生版がどれほど広く存在するかを特定する。
- LLM生成の初期シードを使用してBusyBoxのファズィングの有効性を高める。
- プログラムの派生版全体でクラッシュを再利用することにより、脆弱性発見までの時間を短縮する。
- BusyBoxターゲットでこのアプローチを実証し、従来のファズィングに対する効率向上を示す。
- 組み込みシステムにおけるオープンソースソフトウェア部品に対する実践的な示唆を強調する。
提案手法
- ソースやビルドを変更せずにQEMUモードのAFL++を用いてBusyBoxバイナリをファズィングする。
- ターゲットアプレットの文法に基づきGPT-4を用いてファズィングのターゲット特有の初期シードを生成する。
- ファズィング前にafl-cminでLLM生成シードコーパスを最小化する。
- 関連派生版から収集されたクラッシュ入力データベースと新しいターゲットを照合してクラッシュ再利用を導入する。
- Ghidra、GDB、AFL-Triageなどのツールを用いてクラッシュを手動トリアージし、発生源とCVE関連性を特定する。
- 実世界のファームウェアデータセットに含まれるBusyBoxのバージョンで評価し、最新のBusyBoxリリースでのクラッシュを分析する。

実験結果
リサーチクエスチョン
- RQ1RQ1: 実世界の組み込みデバイスにおけるBusyBoxの派生版の広がりはどの程度で、派生版間の脆弱性を効率的に特定できるか。
- RQ2RQ2: LLMを活用してBusyBoxのような組み込みLinuxユーティリティプログラムのファズィングを改善するにはどうすればよいか。
- RQ3RQ3: 新しいBusyBoxターゲットをテストする際、クラッシュ再利用戦略は時間とリソースの節約につながるか。
- RQ4RQ4: LLMシード生成とクラッシュ再利用の組み合わせは、完全なファズィングを行わずに最新のBusyBoxバージョンのクラッシュを検出できるか。
主な発見
- 古いBusyBoxバージョンが実世界の組み込みデバイスに残っており、更新の必要性が強調される。
- LLM生成の初期シードは、ランダムシードと比べてクラッシュ数を大幅に増加させる。
- クラッシュ再利用は既存クラッシュデータを用いて新しいターゲットをテストすることを可能にし、ファズィングの時間とリソースを削減する。
- 調査時点の最新BusyBoxバージョンは、クラッシュ再利用とターゲットを絞ったファズィングを通じて特定されたクラッシュを示した。
- 手動トリアージによりクラッシュの特徴と、問題がBusyBox由来か依存関係由来かが明らかになり、アプローチの妥当性を検証した。
- awkを含むBusyBoxアプレットに対してワークフローを実証し、dc、man、ashなど他のアプレットにも拡張した。

より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。