BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース OpenSSFがFuzz Introspectorをリリースして、C/C++ファズテストのカバレッジを改善

OpenSSFがFuzz Introspectorをリリースして、C/C++ファズテストのカバレッジを改善

原文(投稿日:2022/06/18)へのリンク

Open Source Security Foundation(OpenSSF)は、ファジングのカバレッジを改善するツールをリリースした。このツールは、開発者がアクションに移すことができる分析結果を提供し、カバレッジブロッカー(カバレッジを阻害するもの)の特定を支援する。

ファズテストは、セキュリティの悪用と脆弱性の発見を支援する手法である。それは、人間のテスターが見つけ出すのが難しいエッジケースを突くことによるものである。ファズテストは有望である一方で、独自の複雑さがある。

ファジングの効果は、コードがどれだけカバーされているかによります。適切なカバレッジを実現するファジングを提供する効果的なツール(「ファザー」)を開発することは、依然としてチャレンジングなことです。

これは、Mozilla NSSNSO iMessageのような2つのオープンソースプロジェクトが、ファジング技術を使っているにもかかわらず、攻撃に対して脆弱であることが最近発見されたという事実によって証明されているとFuzz Introspectorの開発者が述べている。

開発者が簡単にプロジェクトのファズのカバレッジを広げられるようにするために、Fuzz Introspectorは、関数、静的コールグラフ、ランタイムカバレッジ情報を分析し、コードのファジングを制限している可能性のあるブロッカーを開発者が可能な限り把握できるようにする。

Fuzz Introspectorは2つの主要な要素から成っている。1つはコンパイラベースの静的分析で、LLVMリンクタイム最適化(LTO)パスを通して分析中のコードに関するデータを収集することを目的としている。もう1つは後処理で、llvm-covによって生成されたカバレッジレポートとともに、最初のステップで生成されたデータの分析を行う。

この処理の後、Fuzz Introspectorではプロジェクト内の各関数の興味深いプロパティをいくつか表示することができる。例えば、循環的複雑度、いくつの他の関数に到達したか、関数の呼び出しの深さ、ファザーが何回そこに到達したかなどである。さらに、ファザーがプロジェクト内のどの機能に到達していないか、そして、カバレッジを拡大する可能性に基づいて、どの機能をファジングの対象にする必要があるかを示すことができる。

Fuzz Introspectorでは、すべてのファザーによる到達可能性の概要、各ファザーのパフォーマンスの概要、カバーされていないすべての機能を赤で表示する呼び出しツリーなどを含むHTMLレポートが生成される。また、このツールはプロジェクトに追加できる新たなファザーを提案しようとする。ただし、作成者によると、この機能はまだ未熟である。

後処理ロジックの主なアウトプットは、人間が解釈できるHTMLレポートです。ただし、現在、ファジングを改善するためにファジングによって役立つデータを抽出する開発が行われています。それは分析プラグインのfuzz_engine_input.pyです。

Fuzz Introspectorは現在、C/C++コードベースで動作するが、他の新たな言語に対するサポートもロードマップに含まれている。

作者について

この記事に星をつける

おすすめ度
スタイル

BT