Google、OSS向けファジングイニシアティブ「OSS-Fuzz」を発表

 Googleは12月1日、オープンソースソフトウェア向けの継続的ファジングイニシアティブ「OSS-Fuzz」を発表した。よく利用されるソフトウェアインフラの安全性と安定性を高めることを目的に、ファジング手法に分散実行を組み合わせた。これにより、オープンソースソフトウェアの脆弱性を調べるテストを大規模に行うことができるという。

 OSS-Fuzzは、同社が参加するLinux FoundationのCore Infrastructure Initiativeの下で開発したベータプログラム。Core Infrastructure InitiativeはGoogleがMicrosoft、Facebookらとともに2014年春のOpenSSLの脆弱性問題を受けて設立した協業プロジェクト。

 自社のChromeブラウザのコンポーネントにおける脆弱性を調べるのに利用しているという「AFL」や「libFuzzer」といった汎用ファジングエンジンを実装し、「AddressSanitize」などのサニタイザーと組み合わせるとともに、分散型のファジングインフラ「ClusterFuzz」を利用し、拡張性のある分散実行環境を構築した。これを利用してバッファオーバーフローや整数オーバーフロー、Use-After-Freeといったセキュリティ脆弱性、メモリリーク、NULLポインタへの値の参照などの安定性上のバグを検出できるという。場合によっては論理上のバグを見つけることもできるとしている。

 プロセスとしては、OSS-Fuzzに参加するプログラムよりClusterFuzzがバグを検出すると、自動的にOSS-Fuzzのイシュートラッカーに報告が行われる。同時に、プロジェクトオーナーにはバグレポートの通知が送られる。バグが修正されるとClusterFuzzが自動で修正を確認し、コメントを加えてイシューをクローズする。

 OSS-FuzzはOpenSSL、JSON、nodejs、PostgreSQL、SQLite3、ffmpegといったプロジェクトで利用されており、1週間に最大4兆回のテストケースを回しているという。

 同日ベータとしてローンチし、対象とするオープンソースプロジェクトの候補の提案を受け付けるという。現時点で対応する言語はC/C++で、OSS-Fuzzの対象となるためには大規模なユーザーを持つ、または世界ベースのITインフラにとって重要であるとみなされる必要があるという。バグ情報の開示ガイドラインによると、OSS-Fuzzのトラッカーで新たに報告されたバグには90日間の非開示期間を設ける。

OSS-Fuzz
https://github.com/google/oss-fuzz