結論: 脆弱性診断は、システムの弱点を広く洗い出す「健康診断」です。ペネトレーションテスト(ペンテスト)は、攻撃者の視点で実際に侵入を試す「抜き打ち訓練」です。多くの場合は、先に診断で弱点を直し、そのうえで重要なシステムでペンテストを行います。どちらも、許可を得た範囲で行うことが前提です。
2つの違い
| 脆弱性診断 | ペネトレーションテスト | |
|---|---|---|
| たとえると | 健康診断 | 侵入の抜き打ち訓練 |
| 目的 | 弱点を広く洗い出す | 実際に侵入できるか試す |
| 視点 | システムの弱点を調べる | 攻撃者の視点で侵入を試みる |
| 範囲 | 広く、浅く | 狙いを絞って、深く |
| 結果 | 脆弱性の一覧と対策 | 侵入の経路と、到達できた範囲 |
| 方法 | ツールが中心(手作業も併用) | 人が、手作業で組み合わせる |
脆弱性の基本は、脆弱性とはで解説しています。
脆弱性診断とは
システムに、既知の弱点が残っていないかを、広く調べます。
- Webサイトなら、SQLインジェクションや、XSSなどの弱点がないか
- サーバーやネットワークなら、古いソフトや、不要に開いた入口がないか
- クラウドなら、設定の誤りがないか
結果は、脆弱性の一覧と、深刻度、対策の案として、報告されます。深刻度は、CVSSなどで示されることが多くあります。
ペネトレーションテストとは
攻撃者と同じ立場で、「侵入できるか」「侵入したら、どこまで進めるか」を、実際に試します。
- 見つかった複数の弱点を、組み合わせて侵入を試みる
- 侵入後に、ほかのシステムへ広がれるかを確かめる
- 「重要なデータに、たどり着けるか」という目標を決めて、行うこともある
結果は、侵入の経路と、到達できた範囲として報告されます。「弱点が何個あるか」よりも、「実際に、どれだけ危険か」が分かります。
調べ方の種類
対象による分け方
| 対象 | 内容 |
|---|---|
| Webアプリケーション | 入力欄、ログイン、セッションなどの弱点 |
| プラットフォーム(ネットワーク) | サーバー、機器、ポートなどの弱点 |
| スマホアプリ | アプリ内のデータの扱い、通信など |
| クラウド | 設定の誤り、権限の過剰 |
渡す情報による分け方
| 種類 | 内容 |
|---|---|
| ブラックボックス | 内部の情報を渡さず、外部の攻撃者と同じ条件で調べる |
| ホワイトボックス | 設計書やソースコードなどを渡して、内部から調べる |
| グレーボックス | 一部の情報(アカウントなど)を渡して調べる |
ペンテストの進め方
- 範囲・時間帯・禁止事項を合意する(どこまで試してよいか、止めてはいけないものは何か)
- 情報を集める(公開されている情報や、構成の確認)
- 侵入を試みる
- 報告を受ける(経路、深刻度、再現の手順、対策)
- 修正して、再確認する
実施の注意点:許可と合意
- **許可なく、他人のシステムに試してはいけません。**不正アクセス禁止法に触れるおそれがあります
- 本番環境で行うと、サービスが止まる可能性があります。実施の時間帯や、止まった時の連絡先を、事前に決めておきます
- クラウドを使っている場合は、サービス提供元のルールで、許可されている範囲を確認します
- 結果には、重要な情報が含まれます。取り扱いのルールを決めておきます
どちらを選ぶか:目安
| 状況 | おすすめ |
|---|---|
| まず、弱点を一通り洗い出したい | 脆弱性診断 |
| 新しいサービスを公開する前 | 脆弱性診断(重要なら、ペンテストも) |
| 大きな機能追加・変更のあと | 脆弱性診断 |
| 診断は済み、守りの実力を確かめたい | ペネトレーションテスト |
| 重要なシステム(お金・個人情報)の最終確認 | ペネトレーションテスト |
定期的に行うことも大切です。システムは変わり、新しい脆弱性も毎日見つかります。
診断やテストの結果を受け取ったら
- 深刻度の高いものから、順に直す。ただし、点数だけで決めない(自分のシステムで、実際に悪用されやすいか、すでに悪用されているか)
- 直したら、直ったことを再確認する
- 同じ種類の弱点が多い時は、作り方や、レビューの方法を見直す
運用面では、WAFで一部の攻撃を止めたり、EDRで侵入後の動きを検知したりする対策と、組み合わせます。
まとめ
- 脆弱性診断は、弱点を広く洗い出す健康診断。ペネトレーションテストは、実際に侵入を試す抜き打ち訓練
- 診断は一覧、ペンテストは経路と到達範囲が分かる
- 多くは、先に診断で直し、重要なシステムでペンテストを行う
- 許可なく他人のシステムに試さない。範囲・時間帯・禁止事項を、事前に合意する
関連記事:脆弱性とは、CVSSとは、WAFとは、EDRとは、SQLインジェクションとは