ペネトレーションテストと脆弱性診断の違いとは
目的の違い
脆弱性診断は、既知の脆弱性をツールを使って網羅的にスキャンし、システムに存在する問題を一覧化することを目的とします。一方、ペネトレーションテストは、発見した脆弱性を実際に悪用して侵入を試み、システムの耐性を実践的に検証します。
例えるなら、脆弱性診断は「ドアの鍵が壊れていないか確認する作業」であり、ペネトレーションテストは「実際に泥棒の視点で侵入を試みる作業」です。鍵の状態を確認するだけでは、窓からの侵入や、複数の小さな問題を組み合わせた攻撃は検出できません。
手法の違い
脆弱性診断は主にNessus、OpenVAS、Qualysなどの自動化ツールを使用して効率的に実施されます。既知の脆弱性データベースと照合し、該当するものをリストアップするため、広範囲を短時間でカバーできることが利点です。
ペネトレーションテストは、経験豊富な専門家が手動で攻撃シナリオを組み立て、ツールでは発見できない複合的な脆弱性やビジネスロジックの問題も検出します。例えば、認証の迂回、権限昇格の連鎖、APIの不正利用など、自動ツールでは発見が困難な脆弱性を人間の創造性と経験で発見します。
検出できる脆弱性の範囲
脆弱性診断が検出するのは、主にCVE(共通脆弱性識別子)に登録された既知の脆弱性です。パッチの未適用、デフォルト設定の放置、古いバージョンのソフトウェアなどが対象です。
ペネトレーションテストでは、これらに加えて、ビジネスロジックの欠陥、認証・認可の不備、セッション管理の問題、情報漏洩につながる設定ミスなど、より広範な問題を発見できます。
費用と期間の違い
脆弱性診断は自動化の比率が高いため、比較的短期間・低コストで実施できます。一般的には数日から1週間程度で完了し、費用も数万円〜数十万円の範囲です。
ペネトレーションテストは専門家の手動作業が中心となるため、1〜2週間程度の診断期間を要し、費用も高くなります。しかし、発見できる脆弱性の深さと実用性を考慮すると、投資対効果は十分にあるといえます。
使い分けの考え方
定期的な脆弱性診断で基本的なセキュリティを維持しつつ、ペネトレーションテストで実際の攻撃に対する耐性を確認するという組み合わせが効果的です。新しいシステムのリリース前や、重要な変更を行った後のタイミングで実施することをお勧めします。
予算が限られている場合は、まず事業上最も重要なシステム(顧客情報を扱うWebアプリケーションなど)に対してペネトレーションテストを実施し、その他のシステムには脆弱性診断を適用するという方法も有効です。