Introduction
ファジングとは、システムやソフトウェアに対して、意図的に例外的な動作を発生させ、潜在バグや脆弱性を検出する手法のことです。ウイルス感染や不正アクセスなどを受けた際に、システムやソフトウェアが問題なく動作することを確認できるなどのメリットがあります。
この記事では、ファジングとは何か、その種類やメリット、デメリットなどについて解説します。
目次
ファジングとは?
ファジングとは、システムやソフトウェアに対して、意図的に例外的な動作を発生させ、潜在バグや脆弱性を検出する手法のことです。
ここでは、ファジングとは何か、ペネトレーションテストとの違いについて解説します。
異常なデータを機器に送り込み、挙動を監視するテスト手法
ファジングとは、システムやソフトウェアに異常なデータを送り込み、潜在バグや脆弱性を検出する手法のことです。
経済産業省の『機器のサイバーセキュリティ確保のためのセキュリティ検証の手引き』によると、以下のように定義されています。
ファジング
対象機器に対して機器の動作に問題を起こす可能性のあるデータを大量に送り込み、その応答や挙動を監視することで脆弱性を検出する検証手法である。
システムや機器に入力する異常なデータのことを「ファズ」と呼びます。ファズをシステムやソフトウェアなどに送り込むことで、どのような挙動を示すかをテストするのが、ファジングの手法です。テスト対象の設計や仕様などにとらわれず、このような異常データを入力したらどのようなことが起こるかを監視して、テストを行います。
たとえば、極端に長い文字列や記号を入力するなど、システムに問題が起こりそうなデータを入力して、挙動を確認します。実際の運用で異常なデータを受けとることもあり、そのような場合に、システムが異常終了などを起こさないか確認することが可能です。
また、ファジングを実施する大きなメリットは、ウイルス感染や不正アクセスなどのサイバー攻撃に対する脆弱性を診断できることです。たとえば、DoS攻撃などは、システムに大量のデータを送り込んで、サーバ遅延や停止に追い込むサイバー攻撃です。このようなサイバー攻撃を受けた場合、正しく異常を検知して、該当のアクセスをブロックするなどの動作が正常に行われるかを実際に検証できます。
また、ログインIDとパスワードを入力する画面で、一文字ずつ文字列をずらしてログインアタックを試みる、ブルートフォース攻撃などに対する動作も検証できます。このような不正アクセスを試みる異常な動作が発生した場合、正しくロック機能が働くか、異常を検知してアラートを発するかなどをテストすることが可能です。
このように、ファジングを行うことで、通常のテストでは検出できない、ウイルス感染や不正アクセスなどを受けた際の動作確認などもできます。
ペネトレーションテストとの違い
ペネトレーションテストとは、実装されたネットワーク機器などに対して、攻撃者の視点でシナリオをつくって侵入を試みるテストです。このテストにより、ネットワークのセキュリティ対応が十分か、脆弱性が潜んでいないかを診断します。シナリオには、内部犯行をたくらむ従業員がいるなどの内容も含まれており、組織の管理体制などもテスト対象です。
ファジングの対象がシステムやソフトウェアであるのに対し、ペネトレーションテストの対象は、ネットワークである点が異なります。
また、テストで明らかにするのは、ファジングの場合はシステムやソフトウェアの予期せぬ不具合や脆弱性です。一方、ペネトレーションテストは、組織内のセキュリティ対策や、情報管理体制の脆弱性を把握するために行います。
ペネトレーションテストについてはこちらもご覧ください。
>>ペネトレーションテストとは?脆弱性診断との違いやメリット・注意点、手法について解説のページへ
ファジングの種類
ファジングには、テスト対象のシステムやソフトウェアの内部構造を考慮して行うか、考慮せず行うかによって、以下の3つの種類にわけられます。
ブラックボックスファジング
この手法は、テスト対象の設計や内部構造を考慮せず、データの入出力を行うことで、対象の不具合や脆弱性を検出する手法です。
たとえば、この画面の入力フォームの入力桁数は○桁だから、○桁以上の異常値を入力するとどうなるかテストしようというのは、内部構造を理解したテストです。これは、次でご説明するホワイトボックスファジングにあたります。
ブラックボックスファジングの場合は、入力桁数や入力できる文字種などの内部構造は考えません。ユーザーが入力しうる入力値だけではなく、ツールによる入力なども行います。仕様や設計にとらわれず、あらゆる観点から異常なデータを入力して、システムやソフトウェアの動作を確認することが可能です。
ブラックボックスファジングを行うことで、設計者が考えつかないような未知の不具合や脆弱性を発見できることもあります。一方で、内部構造を理解せずにテスト内容を検討するため、不具合や脆弱性を見つけにくいのがデメリットです。
ホワイトボックスファジング
ホワイトボックスファジングとは、システムやソフトウェアの内部構造を理解したうえで、テストする方法です。
たとえば、大量のデータが入力された際に、ある一定のデータ量ごとに処理が切り替わる仕様のシステムがあったとします。このとき、そのデータ量を超えたデータでテストすれば、不具合や脆弱性を見つけやすくなります。設計や仕様に応じて網羅的なテストも行えるので、確実に不具合を出し切りたい場合に有効です。
ただし、網羅的なテストを行うためには、すべての仕様や設計を理解したうえで、膨大なテスト項目を消化しなければなりません。そのため、テスト工数が膨れあがるというデメリットもあります。
グレーボックスファジング
グレーボックスファジングは、上記二つの手法の中間に位置する手法です。ホワイトボックスファジングの手法もとり入れながら、より効率的にテストを行います。また、ブラックボックスの考え方もとり入れつつ、ある程度は仕様や設計に基づいたテストを行うことで、テストの精度を高めることが可能です。
上記でご説明したとおり、ブラックボックスファジングとホワイトボックスファジングには、それぞれにメリットとデメリットがあります。その中間的な位置づけのグレーボックスファジングを実施することで、どちらのメリットも得られます。
たとえば、仕様や設計に基づいたテストだけでなく、設計者が考えつかないようなテストも行うことが可能です。テスト工数が膨大になりがちな、ホワイトボックスファジングのテストボリュームを抑えつつ、ブラックボックスファジングの観点からもテストができます。
ファジングのメリット
ファジングを行うと、システムやソフトウェアを開発、運用していくうえで、どのようなメリットがあるかをご説明します。
脆弱性やバグを発見できる
ファジングによって、システムやソフトウェアの脆弱性やバグを発見できます。通常のテストで発見できるのは、仕様や設計の不備、バグなどがあげられ、ファジングでしか発見できない不具合もあります。
普通に使用していてわかる不具合ではなく、ウイルス感染や不正アクセスなどのサイバー攻撃によって生じる不具合を発見できるのが、大きなメリットです。たとえば、大量データの入力に耐えられるか、通常は入力しないようなデータを入力しても、エラーを出力してシステムが停止するなどの不具合を発見できることもあります。
脆弱性についてはこちらもご覧ください。
>>脆弱性とは?その種類や放置する危険性、正しいセキュリティ対策について解説のページへ
知識が少なくても実施できる
ある程度の知識があれば、そこまで専門的な知識がなくても、ツールを使って自動的に検査ができるのもメリットのひとつです。
ファズ(異常データ)を生成して、ツールを介してテスト対象のシステムやソフトウェアに送り込むことで、テストの実施から結果の確認までを自動で行えます。一つひとつのテスト動作を人が行う必要もありません。
労力やコストを削減できる
上記でご説明したとおり、ファズ(異常データ)を生成して、ツールによってテスト対象のシステムやソフトウェアに流し込むことで、テストを実施できます。テスト結果の出力まで自動で行えるため、テストを行う労力やコストを削減可能です。
さらに、ファズの生成を自動化することで、人間が思いつかないような異常データを作成できます。これにより、テストデータやテストケースを人が考える労力を減らせるでしょう。
ファジングのデメリット
ファジングを実施すると多くのメリットを得られますが、一方でデメリットが生じる場合もあります。ここでは、デメリットについてご説明するので、導入時は十分に検討してみてください。
パターンにあてはまらない脆弱性・バグは検知できない
ツールにより、ファズ(異常データ)を入力して自動的にファジングを行いますが、テストパターンは事前に決められたものです。そして、そのパターンやファズでは検知できない脆弱性やバグは、テストをしても見逃されてしまいます。
これはどのようなテストでもいえることですが、テストを十分に行えば、バグや不具合をすべて発見できるわけではありません。どれだけテストをしても、完全にバグや不具合がなくなったとはいいきれず、テストパターンから外れたバグや不具合は見逃されてしまいます。
見逃しを防ぐための解決方法は、網羅的なテストを行って、テストケースを増やすことだけではありません。無限にテストケースを増やせるわけはなく、どこかで折りあいをつけて、テストを区切る必要があります。そのためには、過去の不具合やシステム、ソフトウェアの性質、開発プロジェクトの特性などに応じて、もっとも効率のよいテストを計画する必要があります。
原因分析は専門家にやってもらう必要がある
テストの実行までなら、専門的な知識がなくてもできるかもしれません。しかし、結果を確認して、詳細な原因分析を行うためには、専門的な知識と経験が必要です。そのため、ファジングを行い、バグや脆弱性を突き止めて対処するためには、専門家による手助けが必要になるでしょう。
ファジングツールの選び方
ファジングツールを選ぶ際、まずは無料版か有料版を選ぶ必要があります。ここでは、無料版と有料版の違いをご説明するので、ツール選びの際に参考にしてみてください。
【ファジングツールの無料版と有料版の違い】
無料版 | 有料版 | |
メリット | ・気軽に機能や使い勝手、効果を試せる ・コストがかからない |
・利用できる機能やオプションが多い ・ファズのパターンが豊富 ・機能が豊富で使い勝手がよい ・テスト品質を確保できる |
デメリット | ・利用できる機能やオプションが少ない ・ファズのパターンが少ない ・テスト品質を確保できない場合もある |
・コストがかかる |
システムやソフトウェアのテスト品質を高めたいなら、有料版をおすすめします。ただ、さまざまなツールを試して、最終的にもっとも使いやすく、現場にあっているものを選びたい場合は、無料版を試してみるとよいでしょう。
まとめ
この記事では、ファジングとは何か、その種類やメリット、デメリットなどについて解説しました。ファジングを行うことで、システムやソフトウェアがウイルス感染や不正アクセスを受けた場合に、問題なく動作することなどを確認できるでしょう。
SHIFTでは、セキュリティソリューションの導入支援を行っています。まずはお気軽にご相談ください。
>>SHIFTのセキュリティソリューションのページへ
>>お問い合わせページへ
>>料金についてページへ