ファジングとはどのような脆弱性検査手法なのか?
ファジングとは
ファジングとはシステムの仕様に反したデータを大量にソフトウェアに入力し、その応答や挙動を監視することで脆弱性を検出する検査手法です。
入力される予測不能なデータがファズ(fuzz)と呼ばれることが、この検査方法の名前の由来となっています。
ファジングが使われる状況
上述の通り、ファジングは脆弱性の検出のために使用されます。
開発プロジェクトの最終段階でセキュリティチェックをする際や、定期的なセキュリティ診断の際に利用されることが想定されます。
ファジングの方法
ファジングツールの使用
ファジングではファザー(fuzzer)とも呼ばれるファジングツールを使用して検査がなされます。
ファジングツールは「ファズの生成・加工」、「ファズの送信・入力」、「ファジング対象の挙動・死活監視」の 3 つの機能を有し、この一連の動作を自動で繰り返し行うことで検査をします。
主なファジングツール
ファジングツールには「Taof」、「Peach Community edition」というものがあり、その使用の仕方については情報処理推進機構(以下IPA)が詳しい手引きを発行しています。
ファジングのメリット
脆弱性の発見
ファジングを実施する最大のメリットは脆弱性の発見です。
例えば大量のデータを送信するとサーバーがダウンしてしまうなどの脆弱性を検出することができます。
バグの発見
ファジングでは予測不能な大量のデータを送るため、結果的にブラックボックステストと同様の効果が期待でき、バグの発見につながります。
脆弱性とまではいかなくとも、「あまりにも長すぎるテキストを入力したら思わぬエラーがでた!」「データの送信方法を少し変えるだけで正常に作動しない」など、バグの発見につながります。
自動テストによる労力削減
脆弱性診断では人の手によって疑似的なサイバー攻撃を行い、診断を行うことがあります。
しかしファジングではファザーと呼ばれるファジングツールを使って検査を行うため、人による検査の手間が省け、労力削減につながります。
ファジングの課題
ファジングでは検出できないこと
このように脆弱性の検出のみならず、バグの発見にもつながり、人手もかからないファジングは文句のない診断方法のように見えます。
しかし、このファジングもいくつかの課題を抱えています。
例えば、ファジングでは以下のような項目が検査できないとされています。
- アクセス制御の欠陥
- 粗悪な設計ロジック(リバースエンジニアリングの段階で見つかる可能性はあるが、それはファジング自体によるものではない)
- バックドアの検出(ファジングツールでは、本来の動作との見分けはつかない)
- メモリ破壊(スタックの書き換えなどによる権限昇格など)
- 複数の脆弱性の合わせ技
安易に使用できない
またファジングでは大量にデータを送信しますが、いわゆるブルートフォースアタックを受けている状態になります。
さらに予想不可能なデータが送られるため、データベースが破壊されるおそれもあります。
チェックする際は本番環境と同等のテスト環境を用意し、バックアップを必ずとって行う必要があります。