入門解説

CWEとは
(原因分類:設計改善に効く)

CWEとは Common Weakness Enumeration の略で、脆弱性そのものではなく、脆弱性を生む“弱点の種類” を整理した共通辞書です。
MITREはCWEを、ソフトウェアとハードウェアの弱点をまとめたコミュニティ主導の一覧として説明しています。

つまりCWEは「何が起きたか」ではなく、「なぜ起きたか(根本原因)」を考えるための言葉です。

CVEとの違い

ここは最初に分けて理解すると楽です。

CVE

実際に公開された個別の脆弱性の番号(事象)

CWE

その脆弱性の背後にある弱点の型(原因)

NVDの脆弱性詳細ページでは、Weakness Enumeration としてCWEが表示され、NVDはCWE-1003(公開脆弱性の簡易マッピング向けの見方)を使ってCWEを関連付けていると説明しています。
つまり実務では、「CVEで案件を追い、CWEで原因傾向を見る」と整理すると分かりやすいです。

なぜ「設計改善に効く」のか

MITREの Root Cause Mapping Guidance は、CWEを使う価値として、脆弱性の根本原因を見える化し、投資・ポリシー・開発実務を原因レベルで改善できること を挙げています。

たとえば、毎回別のCVE(CVE-A、CVE-B、CVE-C...)に見えても、CWEで見るとすべて「CWE-79(クロスサイトスクリプティング)」や「CWE-20(不適切な入力確認)」といった同じ原因に集約されることがあります。

サプライヤー実務では、OEM照会への回答だけで終わらせず、再発防止の設計改善につなげるための分類として使うのが本筋です。

CWEの“粒度”は4段階ある

CWEには抽象度の違いがあります。MITREのFAQや用語集では、主に次の4段階で説明されています。

Pillar(柱)

最も抽象的なテーマ(例:不適切なデータサニタイズ)

Class(クラス)

技術や言語に依らない大きな弱点(例:バッファオーバーフロー)

Base(ベース)

対策や検出方法を考えやすい具体度(例:スタックベースのバッファオーバーフロー)

Variant(バリアント)

特定技術や文脈にかなり近い弱点(例:C言語における文字列コピー時のバッファオーバーフロー)

実務上は、Base や Variant の方が再発防止に使いやすいです。

MITREの root cause mapping guidance でも、公開脆弱性の根本原因マッピングでは、可能なら Base / Variant を優先し、Class は必要時に使うのが望ましいと説明しています。

よくある誤解

  • 1. CWEは深刻度スコアではない

    CWEは「原因分類」であって、CVSSのような点数ではありません。優先順位付けは、CWE単独ではなく CVSS、対象版数、到達性、VEX と合わせて考えます。

  • 2. CWEが分かればトリアージが完了するわけではない

    CWEは「どう直すか」「何が再発しやすいか」のヒントにはなりますが、その製品に影響するか は別問題です。影響評価には対象版数や構成確認が必要です。

  • 3. Category と Weakness を混同しない

    MITREの用語集では、Category は関連項目をまとめる“箱”であり、Pillar/Class/Base/Variant のような Weakness そのもの とは違うと整理されています。

サプライヤー実務での使いどころ

CWEは、次のような場面で特に役立ちます。

  • OEMから「なぜ起きたのか(根本原因)」を聞かれた時
  • 同系統の不具合が繰り返されている時(再発防止策を練る時)
  • 設計レビューやセキュアコーディングのチェックリストを改善したい時
  • 脆弱性対応を“その場しのぎ”で終わらせたくない時

つまり、CWEは 説明責任の言葉であると同時に、設計改善の言葉 でもあります。
CVE対応を毎回の火消しで終わらせず、原因の型に寄せて改善する時に効きます。


FAQ:CWEとは

Q1. CWEとは何ですか?

脆弱性を生む原因となる弱点の種類を整理した共通辞書です。MITREはCWEをソフトウェア/ハードウェア弱点のコミュニティ主導の一覧と説明しています。

Q2. CWEとCVEの違いは何ですか?

CVEは個別の脆弱性番号、CWEはその脆弱性の背景にある弱点の分類です。NVDではCVE詳細ページにCWEが紐づけられます。

Q3. CWEは優先順位付けに使えますか?

単独では不十分です。CWEは原因分類なので、優先順位はCVSS、対象版数、到達性、VEXなどと合わせて判断します。

Q4. どの粒度のCWEを使えばよいですか?

可能なら Base や Variant の方が具体的で、設計改善や再発防止に使いやすいです。Class はより抽象的です。

脆弱性トリアージの判断基準を整理しませんか?

CWEによる根本原因の分析や、CVE・CVSSを自社の製品構成(外部IFの有無等)にどう落とし込むか、実務ベースで基準を整理したい方はご相談ください。