RSS トレイル・オブ・ビッツ ブログ
フォロー
Goファジングはツールキットの半分が欠けていました。それを修正するためにツールチェーンをフォークしました。
Goのネイティブファジングは、Rust、C、C++のエコシステムに見られる高度な機能を欠いており、整数オーバーフローやゴルーチンリークのような一般的なバグを検出できません。これらの制限に対処するため、gosentryはGoツールチェーンのファジング指向フォークとして開発されました。GosentryはLibAFLを統合し、ネイティブ構造体ファジング、Nautilusによる文法ベースファジング、そしてこれまで見逃されていたバグクラスの検出を可能にします。標準の`testing.F`ワークフローを維持しており、既存のGoファズハーネスを新しいコマンドラインフラグで使用できます。Gosentryは、構造体、スライス、ポインタのような複合型を扱う構造体認識ファジングを通じて、入力品質を向上させます。また、NautilusがJSONのような複雑な構造体に対して文法的に有効な入力を生成・変異させる文法ベースファジングもサポートしています。このツールは、Goのバニラファザーが見逃す整数オーバーフロー、データ競合、ゴルーチンリーク、実行タイムアウトなど、さまざまな不正な動作を特定します。ファズコールバックをキャプチャし、RustベースのLibAFLランナーで実行することで、gosentryはファジングエンジン、スケジューリング、検出器を改善します。すでにOptimismやRevmのようなプロジェクトで、ネイティブGoファジングでは発見が困難な重要なバグを発見しています。このプロジェクトはGitHubでオープンソース化されており、すべての機能に関する包括的なドキュメントが提供されています。