ポイント2:ファジング・ツールの選定

 機能の洗い出しが済んだら、次はそれらの機能に対して「どんなファジング・ツールを使うか」を決める必要がある。検査対象の機能に見合ったファジング・ツールを選定するには、ファジング・ツールがどんな「入力値」を扱い、どのような「経路」で入力するかを知っておく必要がある。

 例えばスマートテレビの「(e)Webブラウザー機能」であれば「HTMLなどで書かれたウェブページをファジング対象の『入力値』とし生成し、HTTPプロトコルによる通信を『経路』として入力する」といったファジング・ツールを探して選定していく。

 それぞれの機能に見合うファジング・ツールを検討し、IPAでは最終的に表2のようにツール11種を選定した。表にはファジング・ツールが対象とする機能や生成する入力値、ファジング・ツールの特徴をまとめている。

表2 スマートテレビのファジングで使用したファジング・ツール
[画像のクリックで拡大表示]

 これらのファジング・ツールは検出できる範囲を補うように組合せて選定している。たとえば同じ「(e)Webブラウザー機能」に対応したファジング・ツールでも、あるものは図形を表示する領域(HTML5のCanvas)の脆弱性を検出するのに特化したツールであったり、あるものはWebページ上のオブジェクトを動的に操作する領域(DOM操作)の脆弱性を検出するのに特化したツールであったりする。

 また、同じ領域の脆弱性を検出するファジング・ツールでも、ツールによって生成する「入力値」が異なっている。例えば、DOM操作の場合、「オブジェクトの追加と削除を繰り返す」、「オブジェクトのプロパティー(属性)に不正な値を設定する」などツールによって動作項目に違いが出る(表3)。

表3 Webブラウザー機能へのファジングの範囲と入力値
[画像のクリックで拡大表示]

 同じ機能でも検出できる範囲や入力値の異なるファジング・ツールで補うことで、より検出できる効果を高めることができる。

 「機能の洗い出し」と「ファジングツールの選定」が終われば、ファジングの準備は整ったといえる。あとはファジングツールに任せてファジングを実施すればよい。

 なお、本連載で例としたスマートテレビへのファジングの結果については、IPAが公開している「スマートテレビの脆弱性検出に関するレポート(http://www.ipa.go.jp/security/vuln/documents/fuzzing-smarttv.pdf)」をご覧いただきたい。このレポートではIPAが脆弱性検出の普及活動の中で取り組んだ、スマートテレビ4機種へのファジングの結果や、製品開発工程で実施すべき脆弱性対策などをまとめている。

 これまでファジングで効果を得るためのポイントや、スマートテレビへのファジングの準備について説明してきた。読者の方々が扱う製品に、ファジングが適用できるかどうかをイメージしていただけただろうか。製品開発の現場に、ぜひファジングを取り入れて、脆弱性の低減に役立てていただきたい。

 本連載が製品開発における脆弱性の低減の一助となれば幸いである。