CWE(Common Weakness Enumeration) しーだぶりゅーいー
簡単に言うとこんな感じ!
ソフトウェアの「バグの種類図鑑」だよ!「SQLインジェクション」「バッファオーバーフロー」みたいな、セキュリティ上の弱点パターンに番号をつけて整理したリストなんだ。世界共通の”弱点カタログ”ってこと!
CWEとは
CWE(Common Weakness Enumeration) とは、ソフトウェアやハードウェアに存在するセキュリティ上の「弱点の種類」を体系的に分類・番号付けした共通リストのことです。米国の非営利団体 MITRE が管理しており、NISTやDHS(米国国土安全保障省)の支援のもと、世界中のセキュリティ専門家が活用しています。
たとえば「パスワードをハードコーディングしてしまう」という弱点は CWE-259、「SQLクエリに外部入力をそのまま組み込んでしまう」は CWE-89 というように、弱点の”パターン”ごとに一意の番号が割り当てられています。これにより、開発チームや発注者が「この製品はCWE-79(クロスサイトスクリプティング)のリスクに対処できているか?」という共通言語で話せるようになります。
CVE(具体的な脆弱性の事例)が「実際に起きたインシデントの記録」だとすると、CWEは「どんなミスがその原因になりやすいか」という根本原因の分類です。開発段階でCWEを意識することで、脆弱性が生まれる前に予防できます。
CWEの構造と分類
CWEは単なるリストではなく、階層ツリー構造で整理されています。大きな概念から具体的なコードレベルの弱点まで、4つのレベルで分類されています。
| レベル | 名称 | 説明 | 例 |
|---|---|---|---|
| 1 | Pillar(柱) | 最も抽象的な大分類 | CWE-664: リソース管理の不備 |
| 2 | Class(クラス) | 技術に依存しない中分類 | CWE-404: リソースの不適切な解放 |
| 3 | Base(ベース) | 修正・検出ができる粒度 | CWE-401: メモリリーク |
| 4 | Variant(バリアント) | 言語・技術に依存した詳細 | CWE-775: ファイルディスクリプタのリーク |
覚え方:CWEとCVEの違い
「CWE = 弱点の種類(Why)、CVE = 実際の脆弱性(What)」と覚えよう!
- CWE(Common Weakness Enumeration)→ “なぜ脆弱性が生まれるか”のパターン集
- CVE(Common Vulnerabilities and Exposures)→ “実際に発見された脆弱性”の事例集
料理に例えると、CWEは「食中毒を起こしやすい調理ミスの種類リスト」、CVEは「○月○日に△△レストランで発生した食中毒事件」といったイメージです。
よく知られているCWEトップ例(CWE Top 25)
MITREは毎年「最も危険なソフトウェアの弱点トップ25」を公表しています。
| 順位 | CWE番号 | 弱点名 | 身近な例 |
|---|---|---|---|
| 1位 | CWE-79 | クロスサイトスクリプティング(XSS) | Webフォームに悪意あるスクリプト埋め込み |
| 2位 | CWE-787 | 境界外書き込み | バッファオーバーフローの一種 |
| 3位 | CWE-89 | SQLインジェクション | DBへの不正コマンド挿入 |
| 4位 | CWE-416 | 解放後使用(Use After Free) | 解放済みメモリへのアクセス |
| 5位 | CWE-78 | OSコマンドインジェクション | 外部入力によるOSコマンド実行 |
歴史と背景
- 2005年 — MITREがCWEプロジェクトを開始。当時はセキュリティ専門家の間でも「脆弱性の根本原因」について共通の言語がなかった
- 2008年 — CWE 1.0として正式公開。初期リリース時点で約700件の弱点を収録
- 2011年 — 「CWE/SANS Top 25 Most Dangerous Software Errors」を初公開。開発者向けの教育用途に広がる
- 2014年 — ハードウェアの弱点も扱う範囲に拡張開始。組み込みシステムやIoT機器への対応が始まる
- 2019年 — 現在の形式「CWE Top 25」として年次更新が定例化。CVEデータベースとの連携が強化される
- 2023年 — CWE 4.x系が継続更新中。収録件数は900件以上に達し、ハードウェア・ファームウェア領域も充実
背景として、2000年代初頭にWebアプリケーションの爆発的普及と同時にSQLインジェクションやXSSといった攻撃が急増したことが、共通分類の必要性を高めました。
CWE・CVE・CVSSの関係
セキュリティ管理でよく登場する「C系3兄弟」を整理します。
実務での活用場面
発注者・情シス担当として知っておきたい活用シーンを整理します。
| 場面 | CWEの使い方 |
|---|---|
| ベンダー選定・RFP作成 | 「CWE Top 25への対策実施状況を提出してください」と要件に盛り込む |
| 脆弱性診断レポートの読み方 | 診断結果にCWE番号があれば、どの種類の弱点かすぐ確認できる |
| 開発ガイドライン策定 | セキュアコーディング規約にCWE番号を紐づけて基準を明確化 |
| インシデント発生時の原因分析 | CVEの原因となったCWEを特定し、同種の弱点を一括で洗い出す |
関連する規格・RFC
| 規格・番号 | 内容 |
|---|---|
| CWE List (MITRE) | CWEの公式リスト。900件以上の弱点を検索・参照可能 |
| NIST SP 800-53 | 米国政府のセキュリティ管理策。CWEと対応関係がある |
| ISO/IEC 15408 (Common Criteria) | ITセキュリティ評価の国際規格。CWEを補完する形で使われる |
関連用語
- CVE — 実際に発見・公開されたソフトウェア脆弱性の識別番号リスト
- CVSS — 脆弱性の深刻度を0.0〜10.0でスコア化する共通評価システム
- NVD — NISTが管理するCVE・CVSSを集約した脆弱性データベース
- OWASP — Webアプリのセキュリティ標準を策定する非営利団体。Top 10はCWEと連携
- SQLインジェクション — データベースへの不正命令を埋め込む攻撃(CWE-89の代表例)
- XSS — Webページに悪意あるスクリプトを挿入するクロスサイトスクリプティング攻撃
- セキュアコーディング — 脆弱性を作り込まないためのコーディング規約・設計原則
- 脆弱性診断 — システムのセキュリティ上の弱点を発見・評価するプロセス