脆弱性診断に関する話をすると、ペネトレーションテストという単語も出てきて、脆弱性診断を行うのか?ペネトレーションテストを行うのか?アセスメントの要件が明確にならないことがあります。
脆弱性診断とペネトレーションテストが同じものとして認識されているケースもありますのでそれぞれの目的から明確にしてどのような違いがあるのか解説したいと思います。
脆弱性診断は脆弱性を検出することが目的で診断の対象とする箇所にセキュリティの問題点を洗い出し脆弱な部分を認識します。診断の対象はサーバやネットワーク、ウェブアプリケーションなどその範囲をアプリケーションオーナーやシステム管理者と合意して進めることになります。
診断方法は、サーバであれば既知のOSやインストールされたアプリケーションの脆弱性がないか、アプリケーションであれば、ビジネスロジック上の問題点やシステムのバックドアの存在や認証回避が可能かを含めてそのアプリケーション特有の調査を行います。
前者のようにOSの脆弱性など汎用的なソフトウェアの場合、脆弱性診断スキャナでは既知の脆弱性が特定できますが、自社で開発したアプリケーション上のビジネスロジックについてはビジネスプロセスやアプリケーションの動作の仕組みをある程度理解して脆弱性診断スキャナ以外の検査方法で検査しないと検出が難しい場合があります。
また脆弱性診断スキャナで出力された結果でも誤検知で実施には脆弱性がないが、スキャナの検査ルール上で引っかかり検出してしまうケースもあります。脆弱性診断スキャナーの精度に依存しますが出力された脆弱性が存在するかも判断することはシステムの改修やパッチを適用するには重要な判断になります。
一方、ペネトレーションテスト(侵入テストとも呼ばれる)は侵入できるかできないかを目的としますので、システムの脆弱性を洗い出すというより、アクセスできないと想定されているリソースにアクセスできるか、サイバー犯罪者(攻撃者)の視点で侵入を組織の責任者と合意して調査します。
組織の責任者と記述しましたが、組織のセキュリティ態勢、また対応能力がどのくらいあるのか、経営陣のような上層部で検討して抜き打ちで試験を行うケースもありますので組織の責任者と記述しております。
ペネトレーションテストはある特定のシステムの脆弱性から侵入するケースもあれば、ソーシャルエンジニアリングを絡めて、組織のプロセスの脆弱性や人間から発生する脆弱性を含めて行われるケースもあります。
例えば、インターネット上から組織に関連する情報を収集するなか社員の個人情報も収集することができる可能性があります。
インターネット上には多くの組織に関連した氏名やメールアドレスをはじめとするアドレスが多く存在します。(参照:日本企業における情報漏洩の実態)そのような情報を活用してなりすましによってマルウェアを送信することができるかもしれません。そこからある端末を乗っ取り、目的のシステムにたどり着くことができる可能性もあります。
攻撃の一連の流れを説明したサイバーキルチェーンと言われるモデルが有名です。
ペネトレーションテストはこの一連の流れに沿って侵入検査を行うことが一般的です。
また物理的な脆弱性と人間の脆弱性を利用して外部の顧客を装いながらオフィスのセキュリティゾーンへ共連れを試みたり、特定のエリアに侵入して無線LANの脆弱性や有線LANへの接続を行い侵入試験を行うこともあります。
それぞれの試験は目的が異なりますので、違いを理解しそれぞれの試験の内容を理解した上で費用対効果を考えながら試験を行うことが重要になります。