Skip to main content
QUICK REVIEW

[論文レビュー] Nyx-Net: Network Fuzzing with Incremental Snapshots

Sergej Schumilo, Cornelius Aschermann|VU Research Portal|Nov 4, 2021
Software Testing and Debugging Techniques参考文献 57被引用数 14
ひとこと要約

Nyx-Net は、インクリメンタルで全VMスナップショットおよび選択的ネットワークスタックエミュレーションを用いる、新しいスナップショットベースのファジングフレームワークであり、複雑で状態を保持するネットワークサービスの高パフォーマンスでカバレッジガイドドなファジングを可能にする。従来の最先端手法と比較して最大300倍の高速化を達成し、Lighttpd や MySQL クライアント、Firefox のIPCインタフェースなど、以前未知のバグを発見した。

ABSTRACT

Coverage-guided fuzz testing ("fuzzing") has become mainstream and we have observed lots of progress in this research area recently. However, it is still challenging to efficiently test network services with existing coverage-guided fuzzing methods. In this paper, we introduce the design and implementation of Nyx-Net, a novel snapshot-based fuzzing approach that can successfully fuzz a wide range of targets spanning servers, clients, games, and even Firefox's Inter-Process Communication (IPC) interface. Compared to state-of-the-art methods, Nyx-Net improves test throughput by up to 300x and coverage found by up to 70%. Additionally, Nyx-Net is able to find crashes in two of ProFuzzBench's targets that no other fuzzer found previously. When using Nyx-Net to play the game Super Mario, Nyx-Net shows speedups of 10-30x compared to existing work. Under some circumstances, Nyx-Net is even able play "faster than light": solving the level takes less wall-clock time than playing the level perfectly even once. Nyx-Net is able to find previously unknown bugs in servers such as Lighttpd, clients such as MySQL client, and even Firefox's IPC mechanism - demonstrating the strength and versatility of the proposed approach. Lastly, our prototype implementation was awarded a $20.000 bug bounty for enabling fuzzing on previously unfuzzable code in Firefox and solving a long-standing problem at Mozilla.

研究の動機と目的

  • 従来のカバレッジガイドドファージャーでは扱いにくい、複雑で状態を保持するネットワークサービスを、効率的にファジングする課題に対処すること。
  • ネットワーク遅延、状態汚染、不確実なクリーンアップといった既存手法の制限を、ハイパーバイザーベースのスナップショットを用いることで克服すること。
  • ソースコードやカスタムハーネスが不要な状態で、サーバー、クライアント、ゲーム、IPCメカニズムなど、これまでファジングが困難であったターゲットを効果的にファジング可能にすること。
  • 選択的ネットワークスタックエミュレーションにより、実際のネットワークI/Oからテスト実行を分離することで、テストスループットとコードカバレッジを向上させること。
  • Firefox や Lighttpd、MySQL といった実稼働システムにおいて、新たな脆弱性を発見することで、実用的応用性とセキュリティインパクトを実証すること。

提案手法

  • ハイパーバイザーベースのインクリメンタルスナップショットを活用し、テストケース間でのネイティブに近いパフォーマンスと決定的リセットを実現する。
  • 実ネットワークトラフィックのオーバーヘッドを回避しつつプロトコルの整合性を保つために、ネットワークI/O操作の選択的エミュレーションを導入する。
  • Nyx を基盤とし、ネットワークに適応したスナップショットを追加。ターゲットがファージャーからの入力を受信しようとする段階でスナップショットをトリガーする。
  • ファジング中におけるネットワークスタック動作の監視と制御を可能にする軽量エージェントを採用し、正確なタイミング制御と状態管理を実現する。
  • コードカバレッジフィードバックと変異を用いたカバレッジガイドドな入力生成を適用し、複雑なメッセージパスプロトコルにおける高いコードカバレッジを確保する。
  • バイナリオンリーファジングをサポートし、ソースコードや手動ハーネスなしに、標準リポジトリから入手可能なプリコンパイル済みバイナリを直接テスト可能にする。

実験結果

リサーチクエスチョン

  • RQ1複雑で状態を保持するネットワークサービスに対して、従来のファイルベースファジングに不適切な状況において、どのようにしてカバレッジガイドドファジングを効果的に適用できるか?
  • RQ2実ネットワークI/Oや非インクリメンタルスナップショットと比較して、インクリメンタルで全VMスナップショットは、ファジングのパフォーマンスと信頼性をどの程度向上させるか?
  • RQ3選択的ネットワークスタックエミュレーションは、ファジングのオーバーヘッドを低減しつつ、実際のプロダクションプロトコルでバグを発動させるのに十分な忠実度を維持できるか?
  • RQ4Firefox のIPC、Lighttpd、Super Mario Bros. といった実世界のターゲットに適用した場合、Nyx-Net はテストスループットとコードカバレッジにどのような影響を与えるか?
  • RQ5Nyx-Net は、従来のファージャーが検出できなかった、プロダクションシステムにおける以前未知の脆弱性を発見できるか?

主な発見

  • Nyx-Net は、最先端のネットワークファジング技術と比較して最大300倍の高いテストスループットを達成し、脆弱性の発見を著しく加速した。
  • 平均してコードカバレッジが最大70%向上し、複雑なネットワークプロトコルの表面をより深く探索可能になった。
  • ProFuzzBench ターゲットにおいて、他のいかなるファージャーでも発見されていなかった2件の未知のバグを発見し、優れた探索能力を示した。
  • Super Mario Bros. のゲームプレイファジングにおいて、従来手法と比較して10〜30倍の高速化を達成し、完璧な人間プレーブラウスよりも短いウォールクロックタイムでレベルをクリアした。
  • プロトタイプにより、これまでファジングが不可能とされていた Firefox のIPCインタフェースの成功したファジングが可能となり、2万ドル相当のバグバウンティを獲得するとともに、3件のヌルポインタデリファレンスと2件の利用可能な脆弱性を責任ある形で開示した。
  • Lighttpd の malloc 実装における整数オーバーフローを発見し、リリース前にパッチが適用された。これは、Nyx-Net が実世界のセキュリティテストにおいて効果的であることを示している。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。