CVEとCWEは名前が似ていますが、指しているものが違います。CVEは「この製品のこの版で見つかった1件の脆弱性」に付く番号で、CWEは「その脆弱性を生んだ弱点の種類」に付く番号です。この記事では、両者の違いを表で整理したうえで、CWEの中身(2026年10月28日公開のCWE 5.0)、1件のCVEに誰がどのCWEを付けているのか、2025年版CWE Top 25の読み方までを、公式APIで取った実データで説明します。
まとめ:CVEは1件の脆弱性、CWEはその原因の型
CVEは個別の脆弱性の識別番号で、CVE-2021-44228(Log4Shell)のように年と連番で表します。CWEは製品に依存しない弱点の分類で、CWE-79(クロスサイトスクリプティング)のように番号だけで表します。1件のCVEには0〜複数のCWEが対応付けられ、同じCWEが複数のCVEの原因を表すことがあります。対応するCVEの件数はCWEごとに異なります。
- 件数の桁が違います。CVEは2025年だけで48,244件公開され、CWEの弱点(Weakness)はCWE 5.0で956件です。
- CVEに付くCWEは、まずそのCVEを採番したCNA(CVE採番機関)が付けます。2026年4月15日以降、NVDは条件に合うCVEを優先して詳細情報を補完しています。本記事の標本では、CWEが付いた全件にCNAまたはADP由来の値が含まれていました。
- CNAが付けるCWEには粒度の粗いものが混じります。Log4ShellではCNAが付けた3件のうち2件が、CWE側で「対応付けに使うべきでない(Discouraged)」とされる区分でした。
- 使い分けは、個別対応(どれから直すか)がCVE+CVSS+KEV、再発防止(何を作り込まないか)がCWEです。
CVEとCWEの違いを比較表で確認
違いを観点ごとに並べます。年が入るか、誰が番号を付けるか、深刻度を持つか、の3点が混同しやすいところです。
| 観点 | CVE | CWE |
|---|---|---|
| 正式名称 | Common Vulnerabilities and Exposures | Common Weakness Enumeration |
| 日本語の呼び方 | 共通脆弱性識別子 | 共通脆弱性タイプ一覧 |
| 指すもの | 特定製品の1件の脆弱性 | 製品に依存しない弱点の種類 |
| 番号の形 | CVE-年-4桁以上の連番 | CWE-番号(年は入らない) |
| 件数 | 2025年の公開48,244件 | Weakness 956件(CWE 5.0) |
| 番号を付ける側 | CNA(各ベンダー等) | CWEプログラム(MITRE) |
| 深刻度 | 持たない(CVSSを併記) | 持たない |
| 主な用途 | 影響確認・パッチ適用 | 原因分析・再発防止 |
CVEの年は「採番した年」とは限りません。CNA運用規則の4.2.19項は、脆弱性が初めて公表された年、CVEレコードが初めて公開された年、CVE IDを予約した年のいずれかを使うよう定めています。連番はCVEのJSONスキーマ上4〜19桁を許すので、5桁・6桁の番号も正規です。CWEの番号には年も順序の意味もなく、CWE-79とCWE-89の近さは内容の近さを表しません。
運営はどちらもMITREで、スポンサーは米国CISAです。CVEとCWEは同じ枠組みの「姉妹」なので、片方の番号の付け方をもう片方に当てはめると読み違えます。CVE番号そのものの読み方や検索方法はCVE(共通脆弱性識別子)とは?番号の読み方・CVSS/CWE/NVDとの違いと調べ方で詳しく扱っています。
CWEとは:共通脆弱性タイプ一覧の構成とCWE 5.0の変更点
CWEは、ソフトウェアとハードウェアの弱点を種類ごとに番号付けした一覧です。現行版は2026年10月28日に公開されたCWE 5.0で、同時にXMLとJSONのスキーマが8.0に上がりました。告知は一部を互換性のない変更(breaking changes)と明記しており、CWEのデータを取り込んでいるツールは読み込み処理の見直しが要ります。
抽象度の4段階:Pillar・Class・Base・Variant
同じ「認証の不備」でも番号が複数あるのは、抽象度の違う階層が並んでいるためです。
| 抽象度 | 位置づけ | 例 |
|---|---|---|
| Pillar | これ以上抽象化できない最上位 | CWE-284 不適切なアクセス制御 |
| Class | 言語・技術に依存しない抽象的な弱点 | CWE-287 不適切な認証 |
| Base | 検出・防止の方法を示せる具体さ | CWE-79 クロスサイトスクリプティング |
| Variant | 特定の言語・技術に結び付く | CWE-416 解放後使用 |
脆弱性の原因として使うのはBaseかVariantが基本です。CWEの根本原因マッピングの手引きは「可能な限りBaseまたはVariantを使い、合うものが無いときだけClassを使う」としています。Pillarは分類の見出しであって、対策を決める単位には向きません。
Weakness・Grouping・Viewの件数(CWE 5.0)
CWEの一覧には、弱点そのもの(Weakness)のほかに、弱点を束ねる入れ物が2種類あります。CWE 5.0で、従来の「Category」は「Grouping」に名前が変わりました。
| 種別 | CWE 4.20 | CWE 5.0 |
|---|---|---|
| Weakness | 944 | 956 |
| Grouping(旧Category) | 387 | 396 |
| View | 55 | 58 |
| Deprecated | 64 | 67 |
| 合計 | 1,450 | 1,477 |
数字は4.20と5.0の差分レポートから取りました。5.0ではセッション管理系の弱点(CWE-1462 不適切なセッション管理など)が新設され、新しいビューとしてOpenSSFのPython向けセキュアコーディングガイドやOWASPのGo向けガイドに対応したものが加わっています。ビューは目的別の切り口で、開発者向けのCWE-699(Software Development)、弱点の階層全体を示すCWE-1000(Complete Weakness Hierarchy、旧称Research Concepts)、ハードウェア向けのCWE-1194(Hardware Design)、公開脆弱性の分類用のCWE-1003がよく使われます。
なお、2026年10月29日時点でCWEのREST API(cwe-api.mitre.org)の版情報は4.20を返しており、Webサイトの5.0とずれています。APIで件数を数えると969件など別の数字が出るので、件数は差分レポートの表で確認するのが確実です。
1件のCVEにCWEが付く仕組み:CNA・ADP・NVDの3つの付け手
CVEとCWEは別の番号ですが、CVEのデータの中にCWEの欄があり、ここでつながります。付け手は3者います。
- CNA:そのCVEを採番した機関(多くは製品ベンダー)。CVEレコードの
problemTypes欄にCWE-IDを書きます(CVE Record Formatのスキーマ)。 - ADP:公開後に情報を足す機関。CISAの「Vulnrichment」がCWEを補うことがあります。
- NVD:米国NISTのデータベース。NIST自身の判断で
[email protected]を付け手としたCWEを足します。
同じCVEでも付け手ごとにCWEが違うことは珍しくありません。2026年10月29日にCVE Services APIとNVD APIから取った実例です。
| CVE | CNA | CISA ADP | NVD(NIST) |
|---|---|---|---|
| CVE-2021-44228(Log4Shell) | CWE-502・400・20 | なし | CWE-917 |
| CVE-2024-3400(PAN-OS) | CWE-77・20 | なし | CWE-77 |
| CVE-2014-0160(Heartbleed) | なし | CWE-125 | CWE-125 |
| CVE-2023-4966(Citrix Bleed) | CWE-119 | なし | NVD-CWE-noinfo |
Log4Shellでは、Apache側が「信頼できないデータの逆シリアル化」など3件を付け、NISTは「式言語インジェクション(CWE-917)」を付けています。原因をどこに見るかで答えが割れる典型です。Citrix Bleedでは、CNAがCWE-119を付けた一方で、NISTは判断材料が足りないとして NVD-CWE-noinfo を付けました。
NVD-CWE-OtherとNVD-CWE-noinfoの意味
NVDの画面やAPIで見かけるこの2つはCWEの番号ではなく、NVDが使う印です。NISTの研究者による論文は、NVD-CWE-Other を「CWE-1003のビューに無いCWE」、NVD-CWE-noinfo を「判断に必要な情報が足りない」と説明しています。NVDはCWEを付けるとき、公開脆弱性の分類用に絞ったビューCWE-1003(約130件)の中から最も具体的なものを選ぶ運用です(NVD CVMAPの説明)。noinfoが付いたCVEは「原因不明」ではなく「NVDが決めきれなかった」と読み、CNAの欄を見に行きます。
2026年9月の標本におけるCWEの付与元と欠損率
NISTは2026年4月15日から、詳細を優先して付ける対象をCISAのKEVカタログ掲載分、連邦政府で使うソフトウェア、大統領令14028の重要ソフトウェアとし、それ以外は「最も低い優先度」として、すぐには分析しない扱いにしました。CVEの登録数が2020年から2025年で263%増えたためです。
変更後の付与状況を標本で確認しました。2026年9月公開分としてNVD APIが返したレコードは15,074件で、公開順の4か所から400件ずつ、計1,600件を取り出して weaknesses 欄を集計しています(2026年10月29日取得)。抽出位置はstartIndexが0・4000・8000・12000で、各400件です。標本にはRejectedの15件も含み、無作為抽出ではありません。
| 項目 | 件数 | 割合 |
|---|---|---|
| CWEが1件以上付いている | 1,074 | 67.1% |
| うちNISTが自分で付けたCWEがある | 30 | 1.9% |
| CWEが1件も無い | 526 | 32.9% |
この標本では、CWEが付いた1,074件すべてにCNAまたはADP由来の値が含まれていました。標本全体の32.9%に当たる526件にはCWEがありませんでしたが、これは月全体や2026年全体の割合を示す値ではありません。少なくともこの標本では、NISTが自分で判定したCWEは1.9%にしか付いていません。2026年のCVEでCWEを集計するなら、CNAが付けた値の質を前提に読む必要があります。
CVEに付いたCWEを自分で調べるコマンド
付け手ごとのCWEは、無料・無認証のAPIで並べて見られます。curl と jq があれば動きます。
#!/bin/sh
# 1件のCVEについて、CNA・ADP・NVDそれぞれが付けたCWEを並べる
CVE="${1:-CVE-2021-44228}"
echo "== CVEレコード(CNA)"
curl -s "https://cveawg.mitre.org/api/cve/$CVE" \
| jq -r '.containers.cna.problemTypes[]?.descriptions[]? | .cweId // "(なし)"'
echo "== CVEレコード(ADP)"
curl -s "https://cveawg.mitre.org/api/cve/$CVE" \
| jq -r '.containers.adp[]? | .providerMetadata.shortName as $p
| .problemTypes[]?.descriptions[]? | "\($p) \(.cweId)"'
echo "== NVD"
curl -s "https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=$CVE" \
| jq -r '.vulnerabilities[0].cve.weaknesses[]?
| "\(.source) \(.type) \([.description[].value] | join(","))"'
保存済みのLog4Shellの実行結果です。この取得時点ではADPによるCWEの記載がありませんでした。再実行時に出力が空の場合は、取得成功とJSONの内容を確認してから未記載と判断してください。
== CVEレコード(CNA)
CWE-502
CWE-400
CWE-20
== CVEレコード(ADP)
== NVD
[email protected] Secondary CWE-20,CWE-400,CWE-502
[email protected] Secondary CWE-917
複数のCVEを調べるときは、NVDが公表するAPIのレート制限に従って呼び出し間隔を設けます。空の出力だけでは、通信失敗とCWEの未登録を区別できないため、HTTPステータスと応答本文も確認します。CWEの抽象度と、後述するUsageの区分は次で引けます。
for id in 20 400 502 917; do
curl -s "https://cwe-api.mitre.org/api/v1/cwe/weakness/$id" \
| jq -r '.Weaknesses[0] | "CWE-\(.ID) \(.Abstraction) \(.MappingNotes.Usage)"'
done
CWE-20 Class Discouraged
CWE-400 Class Discouraged
CWE-502 Base Allowed
CWE-917 Base Allowed
CVEに付いたCWEをそのまま信じない:Usageの区分と再マッピング
各CWEには、実際の脆弱性への対応付けに使ってよいかを示す「Usage」の区分があります。
| 区分 | 意味 | 例 |
|---|---|---|
| ALLOWED | 対応付けに使ってよい | CWE-79・CWE-89・CWE-502 |
| ALLOWED-WITH-REVIEW | 限られた状況で慎重な確認のうえ使う | CWE-77・CWE-787・CWE-862 |
| DISCOURAGED | 対応付けに使うべきでない | CWE-20・CWE-119・CWE-284 |
| PROHIBITED | 対応付けに使ってはならない | CWE-1003(ビュー)など |
先の標本でCWEが付いていた1,074件のうち、DISCOURAGEDかPROHIBITEDのCWEを1件でも含むものは250件(23.3%)、それしか付いていないものは209件(19.5%)でした(区分はCWEのREST APIで引いた値)。CWE-862と並んで2番目に多く付いていたCWE-284は、最上位のPillarでDISCOURAGEDです。
CWEの運営側も同じ問題を把握しています。2025年版Top 25の方法論によると、対象39,080件のうち9,468件(24%)を「抽象的すぎる・誤用されやすいCWEが付いている」などの理由で再マッピングの対象にしました。元の付け手は281のCNAにまたがります。今回はLLMによる候補提示も初めて使っています。
実務での読み方は単純です。CVEに付いたCWEがClassやDISCOURAGEDなら、そのまま再発防止策の根拠にしないでください。CWE-20(入力検証の不備)と書かれていても、実際の原因はSQLインジェクションやパストラバーサルのような、より具体的なBaseであることが多いからです。公開された技術情報とCWEの説明・Mapping Notesを照合し、より適切なBaseまたはVariantが確認できる場合に対応付けを見直します。情報が足りない場合は無理に細分化せず、確認できた原因に基づいて対策を決めます。
2025年版CWE Top 25の順位と読み方
CWE Top 25は、実際のCVEに付いたCWEから「件数が多く、深刻度も高い弱点」を順位付けした年次リストです。2025年版は2025年12月11日に公開され、2024年6月1日から2025年6月1日に公開された39,080件のCVEを分析しています。上位10件です。
| 順位 | CWE | 弱点 | スコア | KEV件数 | 前年比 |
|---|---|---|---|---|---|
| 1 | CWE-79 | クロスサイトスクリプティング | 60.38 | 7 | ±0 |
| 2 | CWE-89 | SQLインジェクション | 28.72 | 4 | +1 |
| 3 | CWE-352 | CSRF | 13.64 | 0 | +1 |
| 4 | CWE-862 | 認可の欠如 | 13.28 | 0 | +5 |
| 5 | CWE-787 | 境界外書き込み | 12.68 | 12 | -3 |
| 6 | CWE-22 | パストラバーサル | 8.99 | 10 | -1 |
| 7 | CWE-416 | 解放後使用 | 8.47 | 14 | +1 |
| 8 | CWE-125 | 境界外読み取り | 7.88 | 3 | -2 |
| 9 | CWE-78 | OSコマンドインジェクション | 7.85 | 20 | -2 |
| 10 | CWE-94 | コードインジェクション | 7.57 | 7 | +1 |
スコアは、CWEが付いたCVEの件数と、それらのCVSS 3.x基本値の平均をそれぞれ正規化して掛け合わせ、100倍した値です。件数が効くので、Webアプリで大量に見つかるXSSが1位に居続けます。一方、実際に悪用されたCVE(KEV掲載)の件数は、Top 25の中では9位のCWE-78が20件で最多です。「Top 25の上位=いま狙われている」ではありません。
2025年版は順位の動きが大きく、CWE-20は12位から18位、CWE-77は13位から23位に下がりました。前年までは各CVEのCWEをCWE-1003の約130件に寄せて数えていましたが、2025年版は、CNAによるレビューとCWEチームによる修正を反映した対応付けを、CWE-1003の上位項目へ集約せずに使っています。CWE-120・121・122(バッファオーバーフロー系)とCWE-284が初めて順位に入ったのもこのためで、前年と単純に比べると変化を読み違えます。
CVE・CWE・CVSS・KEVの使い分け
脆弱性情報には役割の違う指標が並びます。それぞれが答えている問いで分けると混乱しません。
| 指標 | 答える問い | 形 |
|---|---|---|
| CVE | どの1件の脆弱性か | CVE-2024-3400 |
| CPE | どの製品・版が該当するか | cpe:2.3:a:… |
| CVSS | 成立したらどれだけ深刻か | 0.0〜10.0 |
| KEV | 実際に悪用されたか | 掲載・非掲載 |
| CWE | どんな種類の作り込みか | CWE-79 |
| CAPEC | どんな攻撃手口か | CAPEC-66 |
個別の修正順序は、CVEで対象を特定し、CVSS・KEVに自社の露出状況や業務影響を合わせて決めます。CWE番号だけで優先度は決まりませんが、弱点別の悪用傾向や再発防止への投資判断には使えます。CVSSの点数の読み方はCVSSv3とは?v3.1のスコアの目安・計算式と計算機の使い方を解説、KEVを使った是正期限の決め方はBOD 26-04とは?KEVの是正期限を4変数で決める仕組みと自社運用への移し方で扱っています。CAPECは攻撃側の分類で、たとえばCAPEC-66(SQLインジェクション)は関連する弱点としてCWE-89とCWE-1286を挙げています。
よく見かける説明に「CWEはSCAPの構成要素」というものがありますが、SCAP 1.4(NIST SP 800-126 Rev. 4)が定める構成仕様の一覧にCWEは入っていません。識別子として入っているのはCVE・CPE・CCEです。SCAPの全体像はSCAPとは?セキュリティ設定共通化手順とSCAP 1.4の変更点【2026年版】にまとめています。
開発側でCWEを使う場面
CWEが効くのは、作る側の規約とツールです。SASTなどの静的解析ツールは検出結果にCWE-IDを付けるので、社内のコーディング規約の項目にもCWE-IDを振っておくと、指摘と規約を番号で突き合わせられます。規約の作り方はセキュアコーディングとは?10原則とIPA・JPCERTのガイドライン、脆弱性別のコード対策、ツールの選び方はSASTとは?DAST・SCAとの違いとCI/CDへの組み込み・導入判断を実装視点で解説が参考になります。
ただし、CWEの全件をそのまま社内規約にすることは勧めません。956件には自社の製品や技術に該当しない弱点も含まれるため、適用対象を絞って具体的な対策に落とし込む必要があります。まず自社の過去の脆弱性報告や診断結果に付いたCWEを数え、上位の数件(WebならCWE-79・89・352・862あたり)に対策を書くところから始めます。CWE-79とCWE-352の違いはXSSとCSRFの違いとは?仕組み・被害・対策を比較し、塞ぐ順番まで解説、CWE-89の具体的な対策コードはSQLインジェクションとは?攻撃例と対策を実行結果で解説|テスト方法・試験の正答で確かめられます。自社のWebアプリにどのCWEが潜んでいるかを外から確かめたい場合は、脆弱性診断・セキュリティ診断で洗い出す方法もあります。
日本語の情報源でCWEを調べるときの注意
IPAの共通脆弱性タイプ一覧CWE概説は、CWEの構造とJVN iPediaでの使い方を日本語で説明しています。JVN iPediaは2016年12月から、独自の分類に加えて収集元に書かれたCWEも付けています。ただし、JVN iPediaとMyJVNは2026年10月22日付で一時停止が告知されており、再開時期は未定です(10月29日時点)。停止中は、JVN本体の脆弱性レポートに併記されたCWE-IDか、英語のCVEレコードを見ます。JVNの運営主体についてはJPCERT/CCとは?読み方(ジェーピーサート)・役割・IPAとの違いと報告先で説明しています。
よくある質問
CVEとCWEの違いを一言で言うと?
CVEは特定製品で見つかった1件の脆弱性の番号、CWEはその脆弱性を生んだ弱点の種類の番号です。CVE-2021-44228(Log4Shell)という1件に、CWE-502やCWE-917といった種類が付く関係です。
CWEとは何ですか?日本語では何と呼びますか?
Common Weakness Enumerationの略で、IPAは「共通脆弱性タイプ一覧」と訳しています。MITREが運営し、米国CISAがスポンサーです。2026年10月28日公開のCWE 5.0で、弱点(Weakness)は956件あります。
CVEとCVSSの違いは何ですか?
CVEは脆弱性を識別する番号で、CVSSはその深刻度を0.0〜10.0で表す点数です。1件のCVEに、CNAやNVDなど付け手ごとに別のCVSSが付くこともあります。CWEはどちらとも違い、深刻度を持ちません。
CVEとは何ですか?
公開された脆弱性に世界共通の番号を付ける仕組みで、CVE-年-連番の形をとります。番号はCNAと呼ばれる認定機関が付けます。年の部分は公表年・レコード公開年・予約年のいずれかで、採番した年とは限りません。
1つのCVEに複数のCWEが付くのはなぜですか?
原因が連鎖している場合や、付け手ごとに見方が違う場合があるためです。CVE-2024-3400では、CNAがCWE-77(コマンドインジェクション)とCWE-20(入力検証の不備)の2つを付け、NISTはCWE-77だけを付けています。