Googleは米国時間2月7日、「ClusterFuzz」のオープンソース化を発表した。ClusterFuzzは同社が使用している自動バグ検出ツールの1つであり、「Google Chrome」に存在していた1万6000件以上のバグの発見に役立ったという。
ファジングツールと呼ばれる同ツール(ツールというよりも、どちらかと言えばインフラだ)は、セキュリティパッチが必要となる場合も多い、メモリ破壊を引き起こすバグの発見に長けている。
ClusterFuzzはこれまで、Googleのエンジニアや、限られたオープンソースプロジェクトのみが利用できるツールだった。しかし今回のオープンソース化により、あらゆる開発者がこの自動バグ発見ツールを利用できるようになった。
GoogleはClusterFuzzを、2年前からオープンソースプロジェクトに対してサービスとして提供しているもう1つのファジングツール「OSS-Fuzz」とともに活用している。これまでに、160を超えるオープンソースプロジェクトで1万1000件以上のバグを発見しているという。一方、ChromeではClusterFuzzが1万6000件以上のバグを発見しており、10億人を超える人々によって利用されているChromeの修正に役立っている。
GoogleのClusterFuzzインスタンスは「Google Cloud Platform」(GCP)の2万5000台を超えるマシン上で稼働しており、同社のクラウドストレージやデータベース、モニタリング、データウェアハウスといったテクノロジを活用している。
しかし今回、ClusterFuzzがオープンソース化されたことで、「Google Cloud」に依存する機能による制約が若干あるものの、開発者はローカルクラスタ上でもClusterFuzzを用いたテストができるようになる。
Google Cloud上でClusterFuzzを使用する際の流れは次の通りだ。Googleがアップロードしたテスト対象プログラムに対して、同ツールは想定外のデータを入力してクラッシュを誘発。それをバグとして自動的に記録する。その後、エンジニアが当該バグの修正に取りかかる。
こういった流れのほとんど(バグ検出とトリアージ、バグ報告、バグ報告の完了処理を含む)が自動化されている。
Googleが述べているように、ブラウザのような複雑なアプリにおいては、ファジングツールが提供する自動化テストによって、手作業でのコードレビューではすり抜けてしまうようなバグの検出や、開発時間の短縮が可能になる。2012年にGoogleは、ClusterFuzzを用いることでChromeのさまざまなビルドに対して1日あたり5000万件のテストケースを実施していたという。
Googleは2年前からOSS-Fuzzプログラムを実施しており、大規模なオープンソースプロジェクトは同プログラムに申請することでGoogleからバグレポートを受け取れるようになっている。しかしこのプログラムに参加できるのは、大規模なユーザーベースを有するソフトウェアプロジェクトや、世界的なITインフラとして重要な役割を担うソフトウェアプロジェクトのみとなっている。
このプログラムへの参加を認められたプロジェクトは、ClusterFuzzツールによるクラッシュやファジング関連データへのアクセスも認められており、Googleの「脆弱性の通知後90日以内にパッチを提供しなければ該当情報を公開する」というポリシーに従うことが要求されている。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。