ファジングとは、開発段階のソフトウェアを対象に行う脆弱性・バグの検査のことです。検査を自動化できるツールを用いるのが一般的ですが、無料や有料・検査対象の違うさまざまなツールがあるため、導入の段階で悩む方も多いでしょう。本記事では、ファジングについての詳しい説明から、ファジングツールの比較ポイントまでを解説します。対象ソフトに行う検査はファジングで良いのかという点や、ツール導入時の比較方法を悩まれている方は、ぜひ参考にしてください。
目次
[ 開く ]
[ 閉じる ]
ファジングとは
ファジングとは別名「ファズ・テスト」とも呼ばれ、ソフトウェアの欠陥(脆弱な部分や不具合)を発見する検査方法のことです。ソフトウェア開発やアップデート時に「予期しない異常データ」を与え、正しく対処できるか、不具合などが起きないかをテストします。
ソフトウェアに入力する異常データのことを「ファズ」と呼びます。ファズをソフトウェアへ大量に送り込み、挙動を監視する方法でテストをするのがファジングの具体的な方法です。
ファジングではファズを大量に入力しデータを収集する・担当者の先入観に囚われずに検査する目的があります。そのため、人の手で入力などをするわけではなく、ファジングツールを活用してファズの生成から挙動の監視までを自動化しテストをおこなう方法が一般的です。
ペネトレーションテストとの違い
ファジングと似た検査に、ペネトレーションテストがあります。よく混同されがちなテストですが、検査対象や内容・目的・得られる結果に明確な違いがあります。
ペネトレーションテストは、企業などですでに実装されているネットワークが検査対象です。攻撃者の視点でシナリオを作成し組織のネットワークシステムへの侵入をテストします。ネットワークシステムのセキュリティ対策・情報の管理体制で脆弱な部分を把握し、企業などのネットワーク体制を強化するためのデータ収集が目的です。
ファジングとペネトレーションテストの目的の違いは、以下のとおりです。
検査 | 目的 |
---|---|
ファジング |
|
ペネトレーションテスト |
|
ペネトレーションテスト(侵入テスト)の詳細については下記もご参考ください。
ファジングを行うメリット
ファジングを行うメリット・ツールを使用して検査を自動化するメリットは、以下の3点が挙げられます。
- 脆弱性を発見できる
- バグを発見できる
- 自動で試験できる
それぞれ詳しく見ていきましょう。
脆弱性を発見できる
ファジングでは、ソフトウェアの脆弱性を発見できます。ファジングでわかる脆弱性とは、思いもよらぬ挙動につながるソフトウェア設計上の欠陥のことです。
ファジングではソフトウェア内部の情報は無視して、専用ツールを用いての入力データの生成を自動化し、さまざまな入力データを送り込む方法が一般的です。ツールで自動化するため、ソフトウェア担当者などの偏見なども関与せず、開発した段階では予想していなかった入力データでテストできます。
予期せぬ挙動から脆弱性を発見することで、ウイルス感染や不正アクセスなど外部から攻撃される経路を少なくできるのです。
バグを発見できる
ファジングでは脆弱性の発見と同時に、ソフトウェアのバグ(不具合)を発見できます。バグがあると、ソフトウェアプログラムが正しく作動しない場合や、想定していた動きと異なる挙動につながりかねません。
ファジングツールを使用すれば、人知では予測できない大量の入力データを自動で送り込めます。そのため、開発段階では予測もつかないような不具合を発見しやくなります。結果としてプログラムを修正でき、ソフトウェア運用時の思いがけないトラブルなどを回避できる可能性が高まります。
自動で試験できる
ファジングはツールを利用することで、ファズの生成からソフトウェアへの送り込み・挙動の監視までを自動で行えます。検査の自動化によって、人力で時間をかけてテストする必要がありません。従業員の時間だけでなく人件費の削減にもつながり、結果的に業務効率アップにもつながります。
また、自動化することによって人間が予測しきれないファズを作り出せるため、より多角的な視点から検査ができるのは大きなメリットです。
ファジングを行ううえでの課題
ツールによって検査自体は自動で行えますが、検査結果からの原因分析は人の手が必要です。このことから、ファジングには2つの課題が挙げられます。
- 検出できないパターンがある
- 原因分析には専門知識を要する
解決策もあるため、併せて解説します。
検出できないパターンがある
ツールを使用してファジングを自動化できるメリットの一方で、同じツールからは事前に決められたパターンのファズしか入力できません。自動化により多くのファズを送り込めますが、使用しているツールのパターンから外れた問題の検出はできないことになります。
このことから、ファジングでテストしたソフトウェアに対して、脆弱な部分やバグが「完全になくなった」とは言い切れません。パターン外の“検出できない問題”がソフトウェアに残ると、運用中のトラブルになる可能性が拭いきれないでしょう。
対応策としては、ファジング対象になるソフトウェアに適したファジングツールを使用することが挙げられます。ファジングツールとひと口に言ってもさまざまなツールがあるため、専門家に相談し最適なツールを使用するようにしましょう。
原因分析には専門知識が要る
ファジングはあくまで、脆弱性や不具合を見つけるテストです。バグなどを発見したあとの詳細な原因分析まではできません。「ファジングでバグを発見して修正し、ソフトウェアの不具合を少なくする」ところがファジングを行うゴールのため、専門知識のある人材が必要です。
テストでは脆弱性や不具合の発見までを行えると理解し、原因分析は専門知識のある人材を雇用する、あるいは分析も外部の専門家に任せるなどの対応が求められます。
ファジングツールの比較ポイント
ファジングを行うには、想定しきれない大量のファズを生成し送り込む作業が必要になります。そのため、ファジングツールの導入が不可欠です。
ファジングツールでは、ファズを大量に生成するところからファジング対象へファズの自動送信・その後の状態監視までの一連の動作を自動で行えます。
無料のフリーツールと有料ツールが存在するため、メリットとデメリットを理解して導入する必要があります。無料・有料ファジングツールにおけるそれぞれのメリットとデメリットは、以下のとおりです。
メリット | デメリット | |
---|---|---|
無料のファジングツール |
|
|
有料のファジングツール |
|
|
ソフトウェアとひと口に言っても、ネットワーク通信ソフトなのか画像ソフトなのかなど、必要なファズの形式はさまざまです。まず、ファジングしたいソフトが対象になっているかという点が、ツールを検討する際に重要になるでしょう。
また、ファズの生成や対象への送信入力方法・状態監視の方法は、ツールによって異なります。対象のソフトに適したツールを選ぶことでファジングの精度も高まるため、ツールの選定は専門家の意見を聞くのがベストです。
まとめ
ファジングは、開発段階のソフトウェアに対して、脆弱性や不具合を発見できる検査です。多角的なデータの収集には大量のファズ(異常データ)をソフトウェアに送り込む必要があります。そのため、ファズの生成からファジング対象ソフトへの送信・送信後の状態監視はツールを用いて自動化するのが一般的です。
ファジングツールには無料ツールと有料ツールがありますが、検査対象となるソフトウェアやファズパターンの多さなどが異なります。対象ソフトによって最適なツールが異なるため、専門家の意見を取り入れつつ、適切な検査を行えるようにしていきましょう。
文責:GMOインターネットグループ株式会社