1 ポイント 投稿者 GN⁺ 2024-10-07 | 1件のコメント | WhatsAppで共有

Fuzzing-101

構成

  • 演習 1: Xpdf, CVE-2019-13288, 120分, Afl-clang-fast, Afl-fuzz, GDB
  • 演習 2: libexif, CVE-2009-3895, CVE-2012-2836, 6時間, Afl-clang-lto, Fuzzライブラリ, Eclipse IDE
  • 演習 3: TCPdump, CVE-2017-13028, 4時間, ASan, Sanitizers
  • 演習 4: LibTIFF, CVE-2016-9297, 3時間, コードカバレッジ, LCOV
  • 演習 5: Libxml2, CVE-2017-9048, 3時間, 辞書, 基本的な並列化, コマンドライン引数ファジング
  • 演習 6: GIMP, CVE-2016-4994, ボーナスバグ, 7時間, 継続的ファジング, インタラクティブアプリケーションのファジング
  • 演習 7: VLC メディアプレーヤー, CVE-2019-14776, 6時間, 部分計測, ファジングハーネス
  • 演習 8: Adobe Reader, 8時間, クローズドソースアプリケーションのファジング, QEMU 計測
  • 演習 9: 7-Zip, CVE-2016-2334, 8時間, WinAFL, Windows アプリケーションのファジング
  • 演習 10 (最終チャレンジ): Google Chrome / V8, CVE-2019-5847, 8時間, Fuzzilli, JavaScript エンジンのファジング

変更ログ

  • 2022年2月14日: 演習 5 の wget のタイプミスを修正
  • 2021年11月25日: 演習 3 を更新および修正

このコースは誰のためのものか?

  • ファジングの基礎を学びたい人
  • 実際のソフトウェアプロジェクトで脆弱性を見つけたい人

要件

  • Linux システムとインターネット接続が必要
  • 基本的な Linux スキルを推奨
  • すべての演習は Ubuntu 20.04.2 LTS でテスト済み
  • このコースでは Michał "lcamtuf" Zalewski の AFL の新しいフォークである AFL++ を使用

ファジングとは?

  • ファズテスト(またはファジング): プログラムにランダム/変異した入力値を与え、例外/クラッシュを監視する自動化されたソフトウェアテスト手法
  • AFL, libFuzzer, HonggFuzz は実際のアプリケーションで成功しているファザーの例
  • カバレッジベースの進化的ファザー: コードカバレッジデータを収集して比較し、新しい実行パスを見つける入力値を選択

カバレッジベースの進化的ファザー

  • 進化的: 進化アルゴリズムに着想を得たメタヒューリスティックなアプローチで、初期サブセット(シード)の進化と変異を通じて新しいクラッシュを見つける
  • カバレッジベース: コードカバレッジデータを収集して比較し、新しい実行パスを見つける入力値を選択

謝辞

  • 支援してくれた人々: Xavier RENE-CORAIL, Alan Vivona, Jason White, Octavio Gianatiempo, van Hauser, Marc Poulhiès, Xu Hanyu, tclan126, epi052, Jeremias Gomes

連絡先

  • 支援が必要な場合や提案がある場合は、GitHub Security Lab Slack の #fuzzing チャンネルに参加

GN⁺のまとめ

  • このコースは、ファジングの基本概念を学び、実際のソフトウェアで脆弱性を見つけるのに役立つ
  • AFL++ のようなツールを使って、多様な実例を通じてファジング技術を身につけることができる
  • ファジングはソフトウェアの安定性とセキュリティを強化するうえで重要な役割を果たし、このコースはそのための実践的なアプローチを提供する
  • 類似の機能を持つツールとして libFuzzer と HonggFuzz がある

1件のコメント

 
GN⁺ 2024-10-07
Hacker Newsの意見
  • リンク先の記事は読むのに11分ほどかかり、golangのアプローチとの違いが興味深い

    • golangではテストを実行するような手軽さでファジングを実行でき、特定のアプリケーションやライブラリの一部を簡単に対象にできる
    • このやり方により、多くの既存技術が不要になる
  • ファジングをより効果的に導く技術について気になる

    • 最善の方法はシードコーパスを提供し、最良の結果を期待することのように見える
  • Heartbleedが一覧にないのは驚き

    • Heartbleedは再現が非常に容易
  • 共有してくれてありがとうという意見

    • とても有用だと思う