脆弱性診断は、システムやアプリに弱点がないかを調べ、危険度と対策を整理して報告する作業です。 「入れるかどうか試す」ペネトレーションテストとは目的が違います。
ペネトレーションテストとの違い
| 脆弱性診断 | ペネトレーションテスト | |
|---|---|---|
| 目的 | 弱点を網羅的に洗い出す | 実際に侵入できるかを確かめる |
| 進め方 | ツール中心+手動確認 | 目的達成までの経路を探る |
| 結果 | 検出項目の一覧と危険度 | 侵入シナリオと到達点 |
| 頻度 | 定期的に回す | 節目に実施 |
先にやるべきは脆弱性診断です。 明らかな穴が残っている状態でペネトレーションテストをしても、そこを通られて終わりで、費用に見合いません。
何を診るのかを最初に決める
「脆弱性診断をお願いします」だけでは見積もりが出ません。範囲によって内容がまったく違います。
- プラットフォーム診断:OS・ミドルウェアのバージョン、開いているポート、設定の不備
- Webアプリ診断:SQLインジェクション、XSS、認証・認可の欠陥、権限の越境
- ソースコード診断:コードを読んで問題のある実装を探す
とくに「ログイン後の画面を診るか」は費用と発見数を大きく左右します。実害の大きい認可の不備は、ログインしないと見つかりません。
ツールだけでは足りないもの
自動ツールは既知のパターンをよく見つけますが、業務ロジックの穴は原理的に検出できません。
- 他人の注文番号を指定すると他人の情報が見える
- 金額をマイナスで送ると残高が増える
- 権限のないユーザーが管理機能のURLを直接叩ける
これらは「仕様として正しいか」を人が判断しないと分かりません。自動スキャンだけの見積もりが安いのはこの部分が入っていないからです。
実務で見るポイント
- 報告書は危険度だけでなく再現手順が書かれているかを見る。無ければ直せない
- 修正後の再診断(再検証)が含まれるかを契約前に確認する
- 実施には必ず対象システムの所有者の書面許可が要る。共用サーバーでは事業者の許可も必要