Googleは、複数のファジングツールの評価を自動化できるオープンソースソフトウェアであり、無料サービスである「FuzzBench」をリリースした。どのソフトウェアテストが優れているのか、判定しやすい。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Googleは2020年3月2日(米国時間)、ファジングツールの評価を自動化できるオープンソースソフトウェア(OSS)であり、無料サービスである「FuzzBench」をリリースした。ファジングツールの厳密な評価を容易に行えるようにし、ファジングによるバグ調査を導入しやすくする狙いだ。
ファジングは重要なソフトウェアテスト手法だ。「0」「null」「巨大な値」「不正な形式の値」「ランダムな値」「境界値」などさまざまな入力データを多数、ソフトウェアに与えることで、ソフトウェアが含むバグや脆弱(ぜいじゃく)性などをあぶり出すことができる。ファジング用の自動化ソフトウェアをファジングツールと呼ぶ。
Googleは「libFuzzer」や「AFL」のようなファジングツールを使って、数万件のバグを検出してきた。こうしたツールの改良(「MOpt-AFL」「AFLFast」など)が進んでおり、新しいバグ検出手法(「Driller」「QSYM」など)に関する多数の研究論文も発表されている。
課題もある。これらのツールは、その性能を評価、検証しにくいのだ。バグ検出性能を比較する際に、実際のプログラムを大量に使ったとしても、一般化できる形で検証することは難しい。
研究論文では通常、評価結果が示されているものの、評価方法に問題がある場合も少なくない。例えば、実際のプログラムを使ったさまざまなベンチマークセットを大規模に使用していなかったり、試行回数が少なかったり、試行時間が短かったり、統計テストが欠けていたりする、といった問題だ。
評価が完全ではないことには無理からぬ面もある。本格的な規模の実験を行うには法外なコストがかかるからだ。例えば、10種類のファジングツールを24時間かけて調べることにしたとする。20種類のベンチマークを10回ずつ実験するには、Googleによれば2000個ものCPUパワーが必要になる。
Googleの「OSS-Fuzzチーム」は、こうした問題の解決に役立つようにFuzzBenchをリリースした。FuzzBenchは、ファジングツールを再現可能な方法で簡単に評価するためのフレームワークを提供する。FuzzBenchはファジングツールと統合しやすい形で提供されている。
FuzzBenchは24時間にわたって、実際のプログラムを使ったさまざまなベンチマークを進める。実験で得たデータを基に、ファジングツールの性能比較レポートを生成し、各ファジングツールの長所と短所に関する洞察を提供する。
その結果、研究者はファジング手法の完成度を高めるために時間をかけやすくなり、評価のセットアップや既存ファジングツールの管理にかける時間を削減できる。
ファジングツールをFuzzBenchに統合するのは簡単で、大抵は50行未満のコードを記述すればよい。ファジングツールを統合すると、直ちにFuzzBenchが250以上のOSS-Fuzzプロジェクトのほぼ全てを対象に、ファジングを実行できる。OSS-Fuzzチームはこれまでに「AFL」や「LibFuzzer」「Honggfuzz」、幾つかの学術的プロジェクト(「QSYM」「Eclipser」のような)など、10のファジングツールを統合済みだ。
FuzzBenchが出力するレポートには、ファジングツール間の性能の違いが偶然によるものである可能性を示す統計テスト結果や、研究者が自ら分析を行う際に必要な生データも含まれている。OSS-Fuzzチームは、性能指標としてクラッシュ数も追加する計画だ。
OSS-Fuzzチームは、コミュニティーの協力を得てFuzzBenchの開発を進めており、ファジングツール評価の業界標準になることを目指している。ファジング研究者に、ファジングツールや手法によるFuzzBench開発への貢献も呼び掛けている。コミュニティー対してもファジングツール評価のアイデアや手法に関する貢献を募っている。
Copyright © ITmedia, Inc. All Rights Reserved.