脆弱性管理とCVE
脆弱性管理とは
脆弱性(ぜいじゃくせい)は、ソフトウェアや設定に存在する攻撃に悪用されうる弱点のことです。脆弱性管理は、自分たちのシステムにどんな脆弱性があるかを把握し、優先度を付けて修正していく継続的な運用活動を指します。
新しい脆弱性は毎日のように発見されるため、「一度対策したら終わり」にはなりません。把握 → 評価 → 対処のサイクルを回し続けることが本質です。
CVEとCVSS: 世界共通の管理番号と深刻度
| 用語 | 役割 |
|---|---|
| CVE(Common Vulnerabilities and Exposures) | 公開された脆弱性1件ごとに付く世界共通の識別番号。CVE-2024-12345 の形式 |
| CVSS(Common Vulnerability Scoring System) | 脆弱性の深刻度を 0.0〜10.0 で表すスコア。9.0以上は「緊急」と扱われる |
CVE 番号があることで、世界中のベンダー・研究者・利用者が「どの脆弱性の話か」を取り違えずに情報交換できます。ニュースで「CVE-◯◯-◯◯ が悪用されています」と出たら、自分の環境に該当ソフトがあるか確認する、が基本動作です。
管理サイクル
- 資産の把握 — 何の OS・ミドルウェア・ライブラリを、どのバージョンで使っているかの一覧(インベントリ)を持つ
- 情報収集・検出 — 脆弱性情報のウォッチと、スキャナによる自動検出
- 評価と優先付け — CVSS スコアに加え「実際に悪用されているか」「外部公開されたシステムか」で優先度を判断
- 対処 — パッチ適用・バージョンアップが原則。すぐ適用できない場合は設定変更などの緩和策
- 確認 — 対処後に解消を確認し、記録を残す
依存パッケージの脆弱性
現代の開発では、自分が書いたコードよりも依存ライブラリの脆弱性への対応が大きな比重を占めます。[[npmとパッケージ管理]] の npm audit や GitHub の Dependabot のように、依存関係を自動チェックして警告・更新提案してくれる仕組みを [[CI/CD]] のパイプラインに組み込むのが定番です。
初学者向けポイント
- 「使っているものを知らないと守れない」— 資産の一覧化が出発点です
- CVSS が高くても自環境で悪用条件が成立しないこともあり、スコアだけで機械的に判断はできません
- パッチ適用前に [[ペネトレーションテスト]] や診断で見つかった指摘も、同じサイクルに乗せて管理します
- 脆弱性を突かれて事故が起きたときの動きは [[インシデント対応]] の領域です
関連技術とのつながり
- [[ペネトレーションテスト]] — 脆弱性を「実際に悪用できるか」の視点で検証する活動
- [[インシデント対応]] — 脆弱性が悪用されてしまった後の対応プロセス
- [[Webセキュリティ]] — Web アプリ固有の脆弱性の全体像
- [[npmとパッケージ管理]] — 依存ライブラリの脆弱性検出の身近な入り口
- [[コンテナレジストリとイメージ管理]] — ベースイメージ由来のCVEをpush時に検出する場
Q: CVEとは何か?
- [x] 公開された脆弱性1件ごとに付く世界共通の識別番号
- [ ] 脆弱性を自動修正するツールの名前
- [ ] ウイルス対策ソフトの規格
解説: CVE は脆弱性の共通識別番号で、世界中で「どの脆弱性の話か」を取り違えずに情報交換するために使われます。
Q: CVSSが表すものはどれ?
- [ ] 脆弱性が発見された日付
- [x] 脆弱性の深刻度を示す0.0〜10.0のスコア
- [ ] 攻撃者の人数
解説: CVSS は深刻度の共通スコアで、9.0以上は緊急と扱われます。優先度判断の材料のひとつです。
Q: 脆弱性管理の説明として正しいのはどれ?
- [ ] 一度パッチを当てれば完了する作業
- [ ] 攻撃を受けた後にだけ行う作業
- [x] 把握・評価・対処のサイクルを回し続ける継続的な活動
解説: 新しい脆弱性は日々発見されるため、脆弱性管理は継続的な運用サイクルとして回し続ける必要があります。