本記事は、当社が自社のWebサーバーを棚卸しした読み取り診断(8環境中5環境がサポート終了のPHPでした)と、お客様向けのセキュリティ対策の設計の中で整理した内容をもとにしています。費用は当社の料金ではなく、一般に公開されている範囲の目安として「桁」で示し、具体的な金額は書いていません。
「脆弱性診断」は1つの検査ではない
脆弱性診断とは、システムに攻撃に使われる穴(脆弱性)があるかを調べ、一覧にする作業の総称です。健康診断と同じで、血液検査・レントゲン・内視鏡が別の検査であるように、脆弱性診断にも「どこを、どうやって調べるか」で種類があります。
この違いを知らずに「脆弱性診断をお願いします」と依頼すると、安いツール診断だけを受けて「異常なし」と安心してしまったり、逆に必要以上に高額なペネトレーションテストを勧められたりします。まず種類を押さえ、自社のシステムに合うものを選ぶことが、費用を無駄にしない近道です。
6種類の診断——何が見つかり、何が見つからないか
| 種類 | 調べる場所 | 見つかるもの | 見つからないもの | 本番への影響 |
|---|---|---|---|---|
| 1. プラットフォーム診断 | サーバー・ネットワーク機器のOS・ミドルウェア・開いているポート | サポート終了のOSやソフト、公開されている既知の脆弱性、不要に開いたポート、古いVPN機器 | 自作のWebアプリの実装の穴(SQLインジェクションなど) | 小。スキャンの要求が届く程度 |
| 2. Webアプリケーション診断 | Webサイト・Webシステムの画面と機能(ログイン・検索・フォーム・API) | SQLインジェクション、XSS、認可の漏れ(他人のデータが見える)、ファイルアップロードの検査漏れ | サーバーの設定やネットワークの穴 | 中。多数の要求を送るため、検証環境か時間帯の調整が要る |
| 3. ツール診断(自動診断) | 1・2をツールで自動的に | 既知のパターンに当てはまる穴を広く・速く・安く | 認可の漏れや業務ロジックの穴など、文脈の理解が要るもの。誤検知も多い | 小〜中 |
| 4. ペネトレーションテスト | システム全体(攻撃者の視点) | 「見つけた穴を組み合わせて、実際に目的(データ取得・管理者権限)を達成できるか」 | 網羅的な穴の一覧(目的は侵入経路の実証であって、網羅ではない) | 中〜大。実施範囲とルールを事前に合意する |
| 5. 設定診断(クラウド・サーバー) | クラウドのセキュリティグループ・IAM・公開設定、php.ini などの設定値 | 公開設定ミス、多要素認証の未設定、過剰な権限、開発向けのままの設定 | 実装の穴、未知の脆弱性 | 無し。設定を読むだけ |
| 6. ソースコード診断 | プログラムのソースコード | 実装の穴を画面に出る前の段階で。使っているライブラリの脆弱性 | 設定・ネットワーク・運用の穴 | 無し。本番に触れない |
要点は2つです。プラットフォーム診断と設定診断は「運用で自然に増える穴」(サポート終了・更新漏れ・設定ミス・置き忘れ)を見つけ、Webアプリ診断とソースコード診断は「作ったときの穴」(実装の不備)を見つけます。どちらか一方では、半分しか見えていません。代表的な攻撃手法とログに残る痕跡は別の記事で整理しています。
費用の目安と、金額が決まる要素
費用は「人が手で調べる時間」でほぼ決まります。ツールだけなら安く、専門家が画面を1つずつ操作して確かめるほど高くなります。一般に公開されている範囲の目安を「桁」で示します。
| 種類 | 費用の目安(桁) | 金額を左右する要素 |
|---|---|---|
| ツール診断 | 月額数千円〜数万円(継続型)、または1回数万円〜 | 対象のIP数・URL数、実行頻度 |
| プラットフォーム診断 | 1回数万円〜数十万円 | 対象のIPアドレス・機器の数、手動確認の有無 |
| 設定診断 | 1回数万円〜数十万円 | クラウドのアカウント数、サーバー台数、報告書の粒度 |
| Webアプリケーション診断 | 1回数十万円〜数百万円 | 画面数・機能数(リクエスト数)、ログイン後の機能の有無、手動診断の割合、再診断の有無 |
| ソースコード診断 | 1回数十万円〜 | コードの行数、言語、ツール併用か手動か |
| ペネトレーションテスト | 1回数十万円〜数百万円以上 | 対象範囲、期間(日数)、シナリオの数、内部からの侵入を含むか |
- 見積りの前に「対象の数」を数える——公開しているドメイン・IPアドレス・画面・API の数が分からないと、見積りが出せません。棚卸しが先です
- 再診断の料金を確認する——見つかった穴を直したあと、直ったかを確かめる再診断が含まれているか、別料金かで総額が変わります
- 「ツール診断で異常なし」は網羅を意味しない——安い診断で何も出なかったことを「安全の証明」と受け取らないこと。見つけられる範囲が違うだけです
サイトを止めない「読み取り診断」の範囲と限界
当社がお客様のセキュリティ対策で最初に行うのは、上の表でいう「1. プラットフォーム診断」と「5. 設定診断」を、読み取りだけで行う診断です。サーバーやコンテナの中で、PHP・OS・ミドルウェアのバージョン、php.ini などの設定値、CMSのプラグインや同梱ライブラリのバージョン、公開領域に置かれたファイル、ファイアウォールやクラウドの公開範囲を読み取り、公開されている脆弱性情報とサポート期限に照らします。
攻撃を模した要求を送らず、設定も変えないため、稼働中のシステムを止めず、通常の業務時間内に実施できます。当社がまず自社の環境でこの診断を行ったところ、サポート終了のPHPが8環境中5環境、開発向けのままの設定、公開領域のテスト用ファイルとSQLダンプ、名前を変えて無効化したつもりのプラグインの複製が見つかりました。「運用で自然に増える穴」は、この方法でほぼ洗い出せます。
自作のWebアプリの実装の穴(SQLインジェクション・認可の漏れなど)は、設定値を読むだけでは分かりません。個人情報を扱う画面やログイン後の機能があるシステムでは、読み取り診断で「運用の穴」を塞いだあと、Webアプリケーション診断を別途行うことをお勧めしています。読み取り診断を「すべてを調べた」と誤解しないでください。
結果は、高・中・低の3段階に分けた指摘事項と対応案として報告します。優先度は「インターネットに公開されているか」と「サポート終了・既知の脆弱性があるか」の組み合わせで決めるので、何から手を付けるかが明確になります。
自社のシステム別、診断の選び方
| 自社の状況 | まず行う診断 | 次に検討する診断 |
|---|---|---|
| 会社案内のサイトと問い合わせフォームだけ(WordPress など) | 読み取り診断(プラットフォーム+設定) | ツール診断を継続型で。更新と管理画面のIP制限が済んでいれば十分なことが多い |
| 会員情報・注文情報を持つECや業務システム | 読み取り診断 | Webアプリケーション診断(ログイン後の機能・認可を重点に)。機能追加のたびに対象を絞って再診断 |
| AWS などクラウド上の基幹システム | 設定診断(セキュリティグループ・IAM・公開設定) | プラットフォーム診断、必要ならペネトレーションテスト(盗まれた資格情報からの横展開を想定) |
| 工場の遠隔保守回線・VPN機器 | プラットフォーム診断(機器の型番・ファームウェア・到達範囲) | 内部からのペネトレーションテスト(保守経路から設備へ到達できるか) |
| 現場のIoT機器・AIカメラ | 読み取り診断(初期パスワード・管理画面の公開・外向き通信) | 機器ごとの認証とネットワーク分離の設計。機器のファームウェア診断 |
| 取引先から診断の証跡を求められた | 求められている種類を確認(多くは Webアプリ診断かプラットフォーム診断の報告書) | 指摘の修正後に再診断を受け、報告書を提出 |
稼働中のシステム別の守り方(ファイアウォール・WAF・VPN・監視の組み合わせ)は、AIサイバー攻撃対策サービスのページで5つのケーススタディとして公開しています。
診断後が本番——暫定策・更新・再診断・監視
診断の報告書を受け取って終わり、が一番多い失敗です。報告書は「穴の一覧」であって、穴を塞いではくれません。当社は診断後を4段階で進めます。
- 暫定策(数日以内)——「公開中かつ高」の指摘は、更新を待たずに攻撃面を減らします。管理画面のIP制限、不要ファイルの削除、使っていないポートの閉鎖、共有アカウントの停止
- 更新と修正(数週間)——PHP・CMS・ライブラリ・機器のファームウェアをサポート内へ。実装の穴は修正。本番と同じ構成の検証環境で先に試し、動作確認を済ませてから切り替えます
- 再診断——直したつもりで直っていない、別の穴が開いた、を防ぐために、対象を絞って再診断します
- 監視(継続)——診断は「その日の状態」の写真です。次の診断までの間に新しい脆弱性が公開され、正規のパスワードが盗まれることもあります。Previento のようにログとファイルの変化を24時間見る監視を置いて、診断と診断の間を埋めます
「ツール診断で異常なし」「WAFがあるから大丈夫」と考えて更新を止めてしまう例は少なくありません。WAFとファイアウォールが止められる攻撃と止められない攻撃は、WAFとファイアウォールの違いで整理しています。
よくある質問(FAQ)
- Q. 脆弱性診断とペネトレーションテストは何が違いますか?
- A. 脆弱性診断は、対象の穴を網羅的に洗い出して一覧にする検査です。ペネトレーションテストは、攻撃者の視点で「実際に侵入して目的を達成できるか」を、見つけた穴を組み合わせて試す演習です。穴の一覧が欲しいなら脆弱性診断、今の守りで本当に侵入を防げるかを確かめたいならペネトレーションテストで、通常は診断を済ませて穴を塞いだあとにペネトレーションテストを行います。
- Q. 診断中にWebサイトは止まりますか?
- A. 方式によります。設定値やバージョンを読み取るだけの診断や、設定診断は本番を止めません。Webアプリケーション診断やツール診断は本番に多数の要求を送るため、通常は検証環境で行うか、本番で行う場合はアクセスの少ない時間帯に負荷を抑えて実施します。負荷をかける攻撃(DoS)の確認は、本番では行わないのが一般的です。
- Q. 脆弱性診断はどのくらいの頻度で行えばよいですか?
- A. 公開中のシステムでは、年1回の定期診断に加え、機能追加や構成変更のたびに対象を絞った診断を行うのが目安です。PHPやCMS、VPN機器のサポート期限が近づいたときの再診断も有効です。診断の間を埋めるのは、ログやファイルの変化を見る継続的な監視で、1回の診断で「安全」が続くわけではありません。
まとめ
脆弱性診断は6種類あり、プラットフォーム診断と設定診断は「運用で増える穴」を、Webアプリ診断とソースコード診断は「作ったときの穴」を見つけます。費用は人が手で調べる時間で決まり、ツール診断の数万円からペネトレーションテストの数百万円まで、桁が違います。
当社が最初に行う読み取り診断は、稼働中のシステムを止めずに「運用で増える穴」を洗い出す方法で、個人情報を扱う画面があればWebアプリ診断を別途行います。そして診断の価値は、報告書ではなく、そのあとの暫定策・更新・再診断・監視で決まります。
「どの診断を受ければよいか分からない」「報告書をもらったが、何から直せばよいか分からない」という段階のご相談も歓迎です。読み取り診断から多層防御の設計、監視までをAIサイバー攻撃対策サービスとしてご支援します。