BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース ClusterFuzzLiteによりGitHubアクションや他のCI/CDパイプラインでClusterFuzzを実行可能に

ClusterFuzzLiteによりGitHubアクションや他のCI/CDパイプラインでClusterFuzzを実行可能に

原文(投稿日:2021/12/02)へのリンク

ClusterFuzzLiteは、その名前が示すように、Google ClusterFuzzの軽量バージョンだ。fuzzテストを通じてソフトウェアシステムのセキュリティと安定性の問題を見つけることを目的としたツールである。ClusterFuzzLiteは、数行のコードでCIパイプラインに統合することを目的としているとGoogleは言っている。

ClusterFuzzは、クラッシュの検出とトリアージ、再現機能の最小化、二等分、修正検証のための、自動化されたエンドツーエンドのインフラストラクチャを提供します。

ClusterFuzzは非常にスケーラブルであり、どのようなサイズのクラスターでも実行できる。Googleは2016年から最大30,000のVMでClusterFuzzを使っている。Googleソフトウェアやその他のOSS-Fuzzベースのプロジェクトで25,000を超えるバグを見つけ出している。

ClusterFuzzは非常に強力だが、本番環境で使用する場合、いくつかのGoogle Cloud Platformサービスに関連付けられ、そのセットアップにはかなりの労力が必要となる。ClusterFuzzには、App Engineインスタンスとファジングボットプールの2つの主要コンポーネントがある。これらは、ファジングセッションやテストケースの最小化など、スケジュールされたタスクの実行を担当するマシンである。

ClusterFuzzLiteは、代わりに単純なアプローチを採用することで、ビルドシステムCIパイプラインとの統合を容易にしている。設定が完了すると、ClusterFuzzLiteによってコード変更ファジングバッチファジングの2つのファジングモードがサポートされる。

コード変更ファジングはプルリクエストとコミットに焦点を当てている。ClusterFuzzLiteがベースラインに入る前にバグを見つけることができる。コード変更ファジングは迅速であることを目的としているため、デフォルトで10分間実行され、最初のクラッシュで終了する。対照的に、バッチファジングはより網羅的であることを目的としている。最初に発見されたバグを終了することなく、事前設定された、より長い時間実行される。バッチファジングは、コミット/PRごとではなく、決められたスケジュールでより適切に実行される。これにより、時間の経過とともにテスト入力のコーパスを構築できる。

バッチファジングでは、冗長なテストケースを導入することになる。これに対処するために、ClusterFuzzLiteは、コーパスプルーニングと呼ばれるモードをサポートする。このモードでは、コードカバレッジを増加させないテストケース(コーパスファイル)が削除される。Googleは、バッチファジングを使う場合、コーパスプルーニングを1日1回実行することを推奨している。さらに、ClusterFuzzLiteは継続的ビルドモードでのファジングもサポートする。

ClusterFuzzLiteは、libFuzzer、メモリの安全性の問題を見つけるためのAddressSanitizer、初期化されていないメモリを見つけるためのMemorySanitizer、および未定義の動作を見つけるためのUndefinedBehaviorSanitizerによるファジングをサポートする。

最も興味深いことは、ClusterFuzzLiteはGitHubアクションですぐに実行できるようになっていることである。実行したいモードごとに構成ファイルを提供するだけで済む。たとえば、PRファジングの場合は.github/workflows/cflite_pr.ymlファイル、バッチファジングの場合は.github/workflows/cflite_batch.ymlである。Googleは、最も一般的なシナリオに適合するデフォルトの構成ファイルを提供している。例えば、リポジトリに送信されたすべてのPRをファジングしたり、最新のHEADでバズファジングをスケジュールしたりするなどだ。

同様に、ClusterFuzzLiteは同じように、kubernetesベースのCI/CDシステムであるGoogle Cloud BuildProwと簡単に統合できる。

この記事に星をつける

おすすめ度
スタイル

BT