興味深い分析オプションを備えた、セキュリティ指向、フィードバック駆動型、進化した使いやすいファザーです。 Hongfuzz の使用に関する入門書については、「使用法」ドキュメントを参照してください。
最新の安定バージョン: 2.6
変更履歴
sudo apt-get install binutils-dev libunwind-dev libblocksruntime-dev clang make
マルチプロセスおよびマルチスレッドです。honggfuzz は単一の実行インスタンスで利用可能なすべての CPU コアの可能性を解放できるため、ファザーの複数のコピーを実行する必要はありません。ファイル コーパスはすべてのファジング プロセス間で自動的に共有され、改善されます。
永続的なファジング モードを使用すると、非常に高速になります。単純な/空のLLVMFuzzerTestOneInput関数は、比較的新しい CPU (i7-6700K など) で1 秒あたり最大 1 か月の反復でテストできます。
セキュリティ バグを発見した確かな実績があります。OpenSSLでクリティカル スコア マークが付いた(現時点で)唯一の脆弱性は、honggfuzz によって発見されました。これまでの調査結果の概要については、「トロフィー」の項を参照してください。
低レベルのインターフェースを使用してプロセスを監視します (Linux および NetBSD でのptraceなど)。他のファザーとは対照的に、クラッシュによるハイジャック/無視された信号 (ファジング プログラムによって傍受され、潜在的に隠蔽された信号) を検出して報告します。
使いやすく、単純なコーパス ディレクトリを入力すると (フィードバック主導のファジングでは空にすることもできます)、フィードバック ベースのカバレッジ メトリクスを利用して拡張します。
いくつかの (他のカバレッジベースのフィードバック駆動型ファザーよりも多く) ハードウェアベース (CPU: 分岐/命令カウント、 Intel BTS 、 Intel PT ) およびソフトウェアベースのフィードバック駆動型ファジング モードをサポートします。また、ブラックボックス バイナリ ファジング用の新しいqemu モードも参照してください。
(少なくとも) GNU/Linux、FreeBSD、NetBSD、Mac OS X、Windows/CygWin、Android で動作します。
永続的ファジング モード(ファジング API を繰り返し呼び出す長期プロセス) をサポートします。詳細については、こちらをご覧ください。
これには、広く使用されているソフトウェア (Apache HTTPS、OpenSSL、libjpeg など) の実際のファズ設定で構成されるサンプル ディレクトリが付属しています。
コーパス最小化モードを提供します。
Linux - BFD ライブラリ (libbfd-dev) および libunwind (libunwind-dev/libunwind8-dev)、ソフトウェアベースのカバレッジ モードの場合は Clang-5.0 以降
FreeBSD - gmake、clang-5.0 以降
NetBSD - gmake、clang、capstone、libBlocksRuntime
Android - Android SDK/NDK。ビルドして実行する方法については、この詳細なドキュメントも参照してください。
Windows - CygWin
ダーウィン/OS X - Xcode 10.8+
Clang/LLVMを使用して honggfuzz をコンパイルする場合 - BlocksRuntime ライブラリ (libblocksruntime-dev) とリンクします。
Hongfuzz は、主要なソフトウェア パッケージにおけるいくつかの興味深いセキュリティ問題を見つけるために使用されてきました。不完全なリスト:
OSS-Fuzz プロジェクトによる多数のセキュリティ問題
OpenSSHでの認証前リモート クラッシュ
アパッチHTTPD
mod_http2でのリモート クラッシュ • CVE-2017-7659
mod_http2での解放後の使用 • CVE-2017-9789
mod_auth_digestでのメモリ リーク • CVE-2017-9788
範囲外アクセス • CVE-2018-1301
HTTP/2 での解放後の書き込み • CVE-2018-1302
範囲外読み取り • CVE-2018-1303
さまざまなSSLライブラリ
OpenSSLでのリモート OOB 読み取り • CVE-2015-1789
OpenSSLにおけるリモート Use-after-Free (RCE の可能性、クリティカルと評価) • CVE-2016-6309
OpenSSLでのリモート OOB 書き込み • CVE-2016-7054
OpenSSLでのリモート OOB 読み取り • CVE-2017-3731
OpenSSLでの初期化されていないメモリの使用
LibreSSLでのクラッシュ
LibreSSLでは無効な無料
BoringSSLでの初期化されていないメモリの使用
Adobe Flashメモリの破損 • CVE-2015-0316
libtiffライブラリの複数のバグ
librsvgライブラリの複数のバグ
ポプラーライブラリの複数のバグ
IDA-Proの複数の悪用可能なバグ
Crypto++でのリモート DoS • CVE-2016-9939
プログラミング言語インタープリタ
PHP/Python/ルビー
PHPWDDX
PHP
Perl: #1、#2、#3
LibXMPでのダブルフリー
SAPCAR でのヒープ バッファー オーバーフロー • CVE-2017-8852
libbassでのクラッシュ
フリータイプ 2 :
CVE-2010-2497
CVE-2010-2498
CVE-2010-2499
CVE-2010-2500
CVE-2010-2519
CVE-2010-2520
CVE-2010-2527
Windows OpenType パーサーにおけるスタック破損の問題: #1、#2、#3
NGINXユニットの無限ループ
MATLAB MAT ファイル I/O ライブラリのいくつかの問題: #1、#2、#3、#4、#5
NASM #1、#2、#3、#4、#5、#6、#7、#8、#9、#10
Samba tdbdump + tdbtool、#2、#3、#4、#5、#6 CVE-2019-14907 CVE-2020-10745 CVE-2021-20277 LPRng_time
djvulibreでのクラッシュ
VLCで複数のクラッシュが発生する
ClassiCubeでのバッファ オーバーフロー
MPVのヒープ バッファ オーバーフロー (または UAF)
picocでのヒープ バッファ オーバーフロー
OpenCOBOLでのクラッシュ : #1、#2
ProFTPDの DoS : #1 • #2
ImageIO の複数のセキュリティ問題 (iOS/MacOS)
htmldocのメモリ破損
OpenDetexでのメモリ破損
Yabasicでのメモリ破損
Xfigのメモリ破損
LibreOfficeのメモリ破損
ATasmでのメモリ破損
oocborrtでのメモリ破損 • CVE-2020-24753
LibRawのメモリ破損
peg-markdownでの NULL-ptr deref
MD4Cの初期化されていない値 • CVE-2020-26148
fwupdの 17 個の新しいバグ
libvipsでのアサーション
[ libocispecでのクラッシュ )(https://github.com/containers/libocispec/commit/6079cd9490096cfb46752bd7491c71253418a02c)
さび:
正規表現 #1、#2、#3 のパニック()
h2 #1、#2、#3 のパニック()
スリープパーサー#1のpanic()
リュートンのパニック() #1
イーサリアムパリティ#1のpanic()/DoS
Parts の crash() - GPT パーティション マネージャー #1
Rust-bitcoin/Rust-Lightning でクラッシュ #1
...その他
CIFASISのQuickFuzz
OSS-ファズ
カエルとファズ
通訳者のファジング: by dyjakan
riufuzz : AFL 風の UI を備えた honggfuzz
h2fuzz : Apache の HTTP/2 実装のファジング
honggfuzz-dharma : ダルマ文法ファザーを備えた honggfuzz
Owl : 同時実行攻撃を検出するシステム
hongfuzz-docker-apps
FFW : ワームのファジング
honggfuzz-rs : Hongfuzz を使用した Rust のファジング
ラフファズ
Monkey : HTTP サーバー
Killerbeez API : モジュラーファジングフレームワーク
FuzzM : グレー ボックス モデルベースのファジング フレームワーク
FuzzOS : Mozilla Security による
アンドロイド:OHA製
QDBI : Quarkslab による
fuzzer-test-suite : Google による
DeepState : Trail-of-Bits 著
Quiche-HTTP/3 : Cloudflare 著
Bolero : ファズとプロパティのテスト フレームワーク
pwnmachine : Linux 上でエクスプロイト開発を行うための vagrantfile
Quick700 : Web ブラウザおよび Web サーバー上のファザーの有効性を分析する
python-hfuzz : honggfuzz と python3 を結合する
go-hfuzz : hongfuzz と go を結合する
Magma : グラウンドトゥルース ファジング ベンチマーク
arbitrary-model-tests : ステートフル モデルをテストするための手続き型マクロ
Clusterfuzz : OSS-fuzz/Chrome-fuzzing の背後にあるファジング エンジン
Apache HTTPサーバー
セントスファズ
FLUFFI : Siemens による瞬時にファジングを行うための完全にローカライズされたユーティリティ
Fluent Bit : Linux 用の高速ログ プロセッサおよびフォワーダー
Samba : SMB サーバー
ユニバーサルファジングドッカー:nnamon 著
Canokey Core : オープンソースのセキュアキーのコア実装
uberfuzz2 : 協調的なファジングフレームワーク
TiKV : 分散トランザクションのキーと値のデータベース
ファズモニター
libmutator : 正当なテスト ケースを変更することでランダムなテスト ケースを生成することを目的とした C ライブラリ
StatZone : DNS ゾーン ファイル アナライザー
shub-fuzz/honggfuzz : hoggfuzz の特異点イメージ
コードインテリジェンス:サービスとしてのファジング
SpecFuzz : Spectre 脆弱性のファジング
rcc : Rust C コンパイラ
EIP1962Fuzzing : さまざまな EIP1962 実装のファジーテスト
wasm-fuzz : wasmer のファジング、ブログ投稿
propfuzz : カバレッジに基づくファジングとプロパティベースのテストを組み合わせる Rust ツール - Facebook より
ビットコインコア:ファジング
ESP32-Fuzzing-Framework : ESP32 アプリケーション用のファジング フレームワーク
Fuzzbench : サービスとしてのファザーベンチマーク
rumpsyscallfuzz : NetBSD ランプカーネルのファジング
libnbd : honggfuzz を使用した libnbd のファジング
EnsmallenGraph : 非常に大きなグラフ上でnode2vecのような加重ランダムウォークを実行するRustライブラリ
オアシスコア
bp7-rs : dtn バンドルプロトコル 7 の Rust 実装
WHATWG : URL C++ ライブラリ
Xaya Core / Chimera : 分散型オープンソース情報登録および転送システム
OpenWRT : 組み込みデバイスを対象とした Linux オペレーティング システム
RcppDeepStateTools : DeepState テスト ハーネスを実行するための R 関数を備えた Linux 固有の R パッケージ
Materialise : リアルタイム アプリケーション用のストリーミング データベース
Rust-ビットコイン
Substrate : ブロックチェーンイノベーションのための次世代フレームワーク
Solana : 高速、安全、検閲耐性のあるブロックチェーン
fwupd : Linux 上のファームウェアの更新を自動、安全、信頼性の高いものにすることを目的としたプロジェクト
polkadot : Substrate フレームワークに基づいた Rust での https://polkadot.network ノードの実装
systemd : hoggfuzz によってテストされます
freetype : hoggfuzz によってテストされます
ghostscript : hongfuzz によってテストされています
Fuzzme : プログラミング言語とファザーのファジング テンプレート
P0 : 画像IOのファジング
TrapFuzz : by P0
Rustのファズテスト
および複数の Rust プロジェクト
ユーザー メーリング リスト: [email protected]、このリンクを使用してサインアップしてください。
これは Google の公式製品ではありません