ファジングで効率良く脆弱性を検出するためのポイント

 ファジングで効率良く脆弱性を検出するにはコツがいる。そのポイントは、検査対象の機器やソフトウエアの「どんな機能」に「どんなファジング・ツール」を用いてファジングを実施するかを決めるところにある。これらはファジングを実施する前の準備段階にあると言ってよい。

  そのために、まずはファジングというセキュリティー・テストの特徴と、ファジングを実施するための道具であるファジング・ツールの特徴をつかんでおきたい。

(1)ファジングの特徴

  先にも述べたが、ファジングは「入力値」に注目するテストである。このため、検査対象の機器やソフトウエアにファジングを実施する前に、どんなデータを「入力値」として受け付けるかを把握する必要がある。さらにその入力値を入力するための規格や媒体となる「経路」や、入力値を処理する「機能」を調べる必要がある。

 例えば、ファジングの対象がWebブラウザーの場合は図3のように、HTMLなどで書かれたWebページが「入力値」、ネットワーク上でWebページをやり取りするためのHTTPプロトコル通信が「経路」、Webページを描画して表示する部分が「機能」となる。

図3 Webブラウザーの入力値・経路・機能
(2)ファジング・ツールの特徴

  次にファジング・ツールの特徴に目を向けてみる。ファジング・ツールによって、生成される「入力値」のデータ様式は多種多様である。例えば、オフィス・ソフトや画像ソフトのファイルを読み込む機能を対象としたファジング・ツールであれば「入力値」をファイルで生成する。また、Webブラウザーを対象としたファジング・ツールであれば、HTMLなどで書かれたWebページを「入力値」として生成する。

 また、同じような機能を対象としたファジング・ツールでも、検査のできる範囲が異なる場合がある。検査のできる範囲とは、たとえばWebブラウザーを対象としたファジング・ツールの場合、図形を描画する領域(例えばHTML5の「Canvas」)や、Webページを構成するオブジェクト(例えばDOM操作)などである。

 さらに、同じような範囲を扱うファジング・ツールでも、生成する「入力値」が異なるものがある。入力値にどのような違いがあるかは、次回に具体的な例をあげて説明する。

(3)ポイントの整理

  このようにファジング・ツールによって生成される「入力値」が異なるため、ファジング・ツールによって、検出できる脆弱性も異なってくる。このため、複数のファジング・ツールを組み合わせ、それぞれのファジング・ツールで検出できる範囲を補うようにファジングを実施することで、脆弱性を検出する効果を高めることができる。

 ファジングで効率よく脆弱性を検出するためのポイントを整理すると、以下の2点が挙げられる。

・機能の洗い出し
 検査対象がどんな「入力値」を受け付ける機能を持つのか。どのような「経路」で入力を受け付けるのかを把握する。

・ファジング・ツールの選定
 検査対象にどんな「入力値」をどのような「経路」で送り込むかを検討し、見合ったツールを選定する。

 では、具体的にどのようにファジングの準備を進めていくのか。次回は過去にIPAが実施したスマートテレビへのファジングを例に、ポイントを押さえつつファジングの準備手順について説明する。