なんとなくわかる「ファジング」

スポンサーリンク

ファジングとは

ファジングとは、検査対象となるソフトウェア製品やシステムに「ファズ(fuzz)」と呼ばれる問題を引き起こしそうなデータを大量に送り込み、その応答や挙動を監視することでバグや未知の脆弱性を検出するセキュリティテストの手法です。

ファズは対象となるデータによって異なり、例えばテキストボックスへの入力だと極端に長い文字列や記号の組み合わせなどが問題を起こしそうなデータとして挙げられます。

ファジングツールによって大量のファズを生成してテストすることができるため、開発者が浮かばないようなテストパターンを作ることができたり、しらみつぶしに問題となる原因をつぶすことができます。ファジングを手動で実施することはほとんどなく,ファジングツールを用いて自動化または半自動化して行うのが一般的になっています。

ファジングの特徴

ブラックボックス検査

ファジングはソフトウェア製品の内部構造を考慮せず、データの入出力に注目することで外から不具合を見つけるブラックボックス検査です。データが正しく処理されているを検証するため、入力データと出力データの結果だけに着眼し、それが仕様書どおりに正しく処理されているかを調べます。

メリットとして対象となるソフトウェア製品やシステムさえあればソースコードを見ることなく検査することができますが、脆弱性が見つかった時はその脆弱性がどこの部分から発生したかを検査のログデータをもとに探す必要があります。

ブルートフォース

ファジングは、大量にファズをファジングツールによって生成し対象ソフトウェア製品に送り込む、ブルートフォースと呼ばれる総当たり的な検査手法で行っています。

専門的知識がいらない

ファジングはシンプルな仕組みのファジングツールを使用して実施するので、複雑な設定を必要としません。そのため、検査対象のソフトウェア製品の知識が少ない人でも比較的導入しやすく、一度使い方を覚えれば誰でも実践できる脆弱性検出手法であると言えます。

ファジングの効果

バグや脆弱性の低減

ファジングはツールを用いて実施するため、何度も繰り返し実施することが比較的容易にできます。繰り返し実施し問題点の修正を積み重ねることで、バグや脆弱性の低減が期待できます。

また、検査対象のソフトウェア製品に送り込むファズは、ファジングツールによって機械的に作成するため、ソフトウェア製品の設計者や開発者が想像しえないようなデータによって未知の脆弱性を検出できる可能性があります。

テストの自動化・効率化による労力削減

多くのファジングツールは検査の設定を人が行って検査自体はツールが行うため、比較的楽な工程でバグや脆弱性を検出できると言えます。

また、同じような入力データを想定したソフトウェア製品に、ファズを流用したり、再利用したりすることが容易なため、テストの労力や工数の削減にもつながります。

コメント

タイトルとURLをコピーしました