Microsoftは、新しいオープンソースのセキュリティツール「Project OneFuzz」をリリースした。Project OneFuzzは、複数のソフトウェアセキュリティテストツールをまとめて、セキュリティ問題になりかねないクラッシュやバグの検知プロセスを自動化する「Azure」向けのテスト用フレームワークだ。
Googleが開発したオープンソースのファジングボット「OSS-Fuzz」は、同社のソフトウェアや他のオープンソースソフトウェアにプロジェクトで多くのバグを検知するのに役立ってきた。Project OneFuzzは、ソフトウェア開発者が抱える同種の問題に対するMicrosoftからの回答だ。
Project OneFuzzは、Microsoftの他のオープンソースプロジェクトと同様に、オープンソースのMIT Licenseの下でGitHubにて提供される。
MicrosoftはProject OneFuzzについて、「Azure向けの拡張可能なファズテストフレームワーク」と説明している。
ファジングとは基本的に、クラッシュするまでソフトウェアにランダムなコードを入力し、セキュリティ問題だけでなくパフォーマンスの問題をも明らかにする手法だ。
Googleはファジングの熱心な支持者で、プログラマーやセキュリティ研究者に対して、ファジングのユーティリティーや手法を利用するよう盛んに勧めてきた。同社のオープンソースのファジングツールには、OSS-Fuzzや「Cluster Fuzz」などがある。
OSS-Fuzzは、開発者がGitHubからダウンロードして、自分のプログラムに利用できる。一部のオープンソースプロジェクト向けに、クラウドサービスとしても提供されている。
Microsoftは以前、既存のソフトウェアテストツールセット「Microsoft Security Risk Detection」の代わりに、自動化されたオープンソースのファジングツールを提供すると発表していた。
Microsoftはまた、ソフトウェア開発者を雇用しているすべての企業が直面する、費用のかかるさまざまな問題を解決するとも述べており、Googleがこの技術の先駆者だと称賛している。
OneFuzzは、同社が社内で「Microsoft Edge」や「Windows」などの製品の精査に利用しているのと同じテスト用フレームワークだ。同社によると、既に「Windows 10」の強化に役立っているという。
Microsoft Securityでセキュリティーソフトウェアエンジニアリング担当主任を務めるJustin Campbell氏と、特別プロジェクト管理担当シニアディレクターのMike Walker氏は、次のように述べている。「ファズテストは、ネイティブコードのセキュリティや信頼性の向上に非常に有効な手法だ。悪用可能で犠牲の大きいセキュリティ脆弱性を発見して除去する最適な基準だ」
また、両氏は「ファズテストはこれまで、開発者にとって両刃の剣だった。ソフトウェア開発のライフサイクルにおいて不可欠であり、悪用可能な脆弱性を見つけるのに非常に有効だが、制御して実行し、情報を引き出すのはかなり難しい」として、「そのように複雑なため、専任のセキュリティエンジニアリングチームがファズテスト機能を構築して運用する必要があった。そのせいで、ファズテストは非常に役に立つが費用のかかるものになった。開発者がファズテストを実行できるようにすると、開発のライフサイクルの早い段階で脆弱性を発見できるようになると同時に、セキュリティエンジニアリングチームが予防的作業から解放される」と述べた。
Microsoftが指摘しているように、「LLVMによってオープンソース化が可能となり、Googleが先駆けとなって進めたコンパイラー分野の最近の進歩によって、ネイティブコードのファズテストに関わるセキュリティエンジニアリング業務が変わってきた」
Microsoftによると、こうした進歩により、開発者は以前よりも安上がりに、かつては付随的な位置付けだった作業を、継続的な開発システムに組み込んで実行できるようになったという。これには、今まで「Electric Fence」のようなツールを使って付随的に実行していたクラッシュの検知も含まれ、「AddressSanitizer(ASan)」を使って組み込めるようになった。
OneFuzzでは、これまで付属ツールだった「iDNA」「Dynamo Rio」「Pin」などにも対応し、「Sanitizer Coverage Processing Tool(sancov)」で組み込めるようになった。
Microsoftは、「Visual Studio」でもこうした機能に試験的に対応するようにしたため、コンパイラーでテストバイナリーを生成でき、開発者は、継続的インテグレーション(CI)や継続的デベロップメント(CD)のパイプラインにそれらを組み込む必要がなくなる。開発者がクラウドでファジングワークロードをスケーリングするのにも役立つ。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。