情報セキュリティ
最終更新日:2018年7月17日
ファジングとは、組込み機器やソフトウェア製品のバグや未知の脆弱性を検出する、セキュリティテストです。
検査対象に問題が起きそうな様々な細工をしたデータを送り、検査対象に異常な動作が起きないかどうかを検査します。
問題が起きそうなデータの一例として、極端に長い文字列や記号の組み合わせなどがあります。このような問題を起こしそうなデータは、ファジングツール(以降、ツールと表記)を使うと自動的に作成することができます。
ツールは、問題が起きそうなデータを大量に自動で作成できます。また、作成データの検査対象への自動送信や、検査対象の状態監視もできます。
ツールは、検査対象に見合った物を選択しましょう。検査対象がどのような製品であるか、またどのような機能であるか、どのような入力データを受け付けるかが選定のポイントになります。
検査対象と選択するツールの例
(検査対象)–(ツール)
IPAで"利用実績のある"ツールに関しては、「ファジング活用の手引き」に記載しておりますので下記の URL をご参照ください。
まず、ファジングを実施したい検査対象の機能にツールが対応しているかどうかを確認する必要があります。
ファジングを実施する際に使用するPCで動作するOS(Operating System)上でツールが動作するか確認することも必要です。また、煩雑な設定をせずに実行できるかどうかを判断することも工数を抑える事に繋がります。
ファジングツールの選択では、以下の点に注意しましょう。
商用のツールとフリーウェアのツールの違いについてご説明いたします。基準については、皆様の環境に応じて異なります。
商用のツールの特徴として、「検査な可能な対象が多い」、「ツールのオプション機能が多い」、「設定項目が多い」、「テストデータ数が多い」などがあります。商用のツールには、レポートの自動作成する機能を持つ物もあります。
フリーウェアのツールの特徴として、「検査可能な対象が少ない」、「オプション機能が少ない」、「設定項目が少ない」などがあります。ファジングを初めて実施する場合には、フリーウェアを試して効果を実感してみる事をお勧めいたします。
費用に関する事項は「製品の品質を確保する「セキュリティテスト」に関するレポート」をご参照下さい。
ファジングツールは最新の物だけ使えばいいとは言えません。
最新のツールであれば、テストが効率化されて、短時間でより高い効果が得られる可能性があります。 しかし、最新のツール以外でも異常動作を検出できる可能性があります。最新のツールで生成しなかったテストデータを更新日時が古いツールが生成し、そこに問題があった場合、古いツールでしか検出できない異常動作もあります。
正常なデータの一部を細工して作られます。
この図はHTTPプロトコルのGETリクエストの例ですが、正常なデータの一部を細工しています。
この図の様に、正常な入力データを元に、テストデータが作られます。テストデータはツールによって生成されます。テストデータは、ファジングツールに依存しており、ツールによってテストデータの細工箇所が異なる場合があります。
正常なデータの内、機器が認識出来るデータの定義に基づいて細工されます。
この図はTCPプロトコルの例ですが、色を付けた箇所が細工されます。ファジングツールによって、細工の箇所は異なります。正常なデータを元に、利用者が指定した箇所を自由に細工できるツールも存在し、一部分だけを固定で細工するツールも存在します。
詳細はファジング実践資料「テストデータ編」をご参照下さい。
ファジングと既知の脆弱性検査(スキャナー)ツールは検査する内容に違いが有ります。
ファジングは未知の脆弱性を発見するために、問題が起きそうなデータを数万から数十万という大量のデータを送ります。
既知の脆弱性検査(スキャナー)ツールは、既に問題が見つかっているデータに絞って検査しますので、検査数は数百~数千のデータに限られます。
検査を実施する手法と、実施したことで得られる結果が異なります。
ペネトレーションテストは組織のサーバやネットワークシステムに対して攻撃者が実際に侵入できるかどうかという点に着目して検査を行います。そのため、運用上のシステムに残存している既知の脆弱性を狙ったり、設計段階での不備を突いたりして実施します。
ファジングによる検査は、PC向けソフトウェア、組み込みソフトウェア等に対して脆弱性を発現させやすいデータやファイルを送り込み、脆弱性の有無を検査する方法です。他の検査では見つけづらい脆弱性も見つけられます。バイナリ形式のソフトウェアの検査ができることが特徴です。
データの入力を受け付ける機器であればファジングを実施できます。
ネットワーク(有線LAN、無線LAN等)の入力をはじめ、画像や音声ファイルというようなファイルを読み込む機器についてもファジングを実施できます。
有線LAN以外の通信に対してもファジングを実施できます。正常なデータを用意し、一部を細工すればファジングを実施できます。実際に公開されているツールにEDID (Enhanced Display Identification Data) 規格のファジングが出来るものがあります。
ファジングで「バッファオーバーフロー」や「OSコマンドインジェクション」等の脆弱性を見つけることは理論上可能です。
問題が起きそうなデータを送り、異常がおきたデータを分析することで見つけることが出来ます。ただし、任意のコード実行等による具体的な攻撃方法が可能かどうかの分析は技術者がより詳細に解析する必要があります。
大量に送り込んだテストデータの中から、テストデータを絞り込んで、異常が起きるデータを特定します。異常が起きた時点の送信データ番号を再送信して、異常が再現することもあります。異常が再現しなかった場合は、機器に異常が起きた時点のテストデータを元に、周辺のテストデータ範囲を決めて再送信します。徐々にテストデータの範囲を絞り込んで最終的に原因となったテストデータを特定します。
詳細はファジング活用の手引きに記載しておりますのでそちらをご参照ください。
具体的にどの程度の脆弱性が見つかるかについては機器によって異なりますし、「テストデータ数」、「検査時間」、「複数のファジングツールの併用」によって、検出できる数は異なってきます。
(参考) IPAの実証結果では、情報家電などの通信機能を持った製品(約20製品)から22件の脆弱性を検出しました。脆弱性の検出数については、検査の対象や使用したツールによって異なった結果となりました。
具体的な日数は、ファジングを実施する内容やファジングに掛けられる工数等によって変動するので、一概に回答することは出来ません。テストにかけられる工数と使用するツールによって異なります。
また、検査対象の機器の応答時間や検査する機能によって時間が大きく異なります。
例えば、TCPとIPで考えた場合、TCPは応答を待つ必要がある事に比べ、IPパケットは応答を待たないため時間が短く済みます。
ご意見をお待ちしております
ファジングに関してのご意見・ご質問等をぜひお寄せください。
2018年7月17日
リンク情報を修正
2017年6月29日
リンク情報を修正
2014年6月16日
本ページを公開