Googleは今日(米国時間2/8)、ClusterFuzzをオープンソース化したと発表した。 ファジングはプログラムのバグ発見の有力な手法だが、このツールは2万5000台以上のコンピューターを結合した大規模クラスターでも作動する。
Googleのファジングに対する取り組みに注意を払っていたなら(読者がエンジニアならそうすべきだ!)、よく知っているとおり、同社はすでに長期間このツールを社内で使用してきた。Googleは数年前にOSS-Fuzzサービスを開始したが、これがClusterFuzzを使用していた。OSS-Fuzzはオープンソース・プロジェクトでしか利用できなかったが、今回のオープンソース化でどんなプログラムでもClusterFuzzを利用できるようになった。
ファジングはコンセプトとしてはシンプルだ。プログラムに大量のデータ(ランダムなデータを含む)をインプットして反応をチェックするというバグ発見の手法だ。プログラムはクラッシュしたり、メモリーリークを起こしたりする。さらに予期せぬ脆弱性が発見されることがある。しかし複数のマシンで作動するプログラムをこの手法でテストしようとすると事態は急速に複雑化する。大規模なデータセンターで作動させることを前提にしたプログラムにはClusterFuzzのような専用ツールが必須となる理由だ。
ClusterFuzzは、バグ検出からレポート作成までの一連のプロセスを自動化し、バグが修正されたら再テストを実行する。ClusterFuzz自身がファジング・エンジンやツールのテストケースを生成するコアファジング機能にオープンソースのlibFuzzer、 AFL fuzzerなどを利用している。
Googleは、「Chromeブラウザの開発ではこのツールを利用し1万6000以上のバグを発見した。またOSS-Fuzzでは160件以上のオープンソース・プロジェクトで1万1000のバグを発見した」としている。ソフトウェアのテストや導入のためのプロセスの多くの部分で自動化が進んでいるため、当然ファジングもホットな話題になってきた。最近ではインハウスで常時ファジングを行う、continuous fuzzingについての記事をたびたび目にする。
画像:Thanit Weerawan / Getty Images
(日本版)色とりどりのポンポンがカット写真に使われているのはfuzzには「毛糸などのケバ、毛玉」などの意味があるため。
(原文へ)