Vulnerability Management

Common Weakness Enumeration

CWE(共通脆弱性タイプ一覧)

Category: Vulnerability Management / Updated: 2026-05-26

📖

Overview

CWE(Common Weakness Enumeration:共通脆弱性タイプ一覧)とは、米国MITRE社が管理・公開しているソフトウェアやハードウェアに存在するセキュリティ上の弱点(脆弱性)を体系的に分類・識別するためのリストです。個々の脆弱性事象ではなく、脆弱性の「タイプ」や「パターン」に焦点を当てており、開発者やセキュリティ専門家が共通の言語で脆弱性について議論・対策するための基盤を提供しています。

CWEは階層構造で整理されており、大分類(ビュー)から中分類(カテゴリー)、そして具体的な弱点タイプ(ウィークネス)へと細分化されています。例えば、CWE-79は「クロスサイトスクリプティング(XSS)」、CWE-89は「SQLインジェクション」を表します。各エントリには、弱点の説明、発生原因、影響範囲、緩和策、関連するCVEエントリへの参照が含まれています。

CWEはCVEやCVSSと密接に連携しており、CVEで報告される個々の脆弱性が「どのタイプの弱点に分類されるか」をCWE番号で示すことで、脆弱性の根本原因の理解と再発防止に役立っています。また、OWASP Top 10やSANS Top 25といった業界標準のセキュリティガイドラインでも、CWE番号を参照して脆弱性を特定しています。

🔬

Details

CWEの構造と分類体系

CWEは複数の階層で構成されています。最上位にはビュー(View)があり、特定の目的に応じた脆弱性の見方を提供します。例えば、「CWE-1000:Research Concepts」は研究目的の包括的なビュー、「CWE-699:Software Development」はソフトウェア開発者向けのビューです。

その下にカテゴリー(Category)があり、共通の特徴を持つ弱点をグループ化します。最も具体的なレベルがウィークネス(Weakness)で、「Base」(個別の弱点タイプ)、「Variant」(特定の状況での弱点)、「Compound」(複数の弱点の組み合わせ)に分類されます。

CWE Top 25 Most Dangerous Software Weaknesses

MITREは毎年、実際のCVEデータに基づいて最も危険なソフトウェアの弱点トップ25を発表しています。このリストは、NVD(National Vulnerability Database)に登録されたCVEの頻度と深刻度を分析して作成されます。

  • CWE-787(境界外書き込み):メモリの境界を超えた書き込みにより、コード実行やクラッシュを引き起こす
  • CWE-79(クロスサイトスクリプティング):Webアプリケーションに悪意のあるスクリプトを注入する
  • CWE-89(SQLインジェクション):SQL文に悪意のある入力を注入してデータベースを操作する
  • CWE-416(解放済みメモリの使用):解放されたメモリを参照し、任意のコード実行を可能にする
  • CWE-78(OSコマンドインジェクション):外部入力を通じてOSコマンドを不正に実行する

CWEとCVEの関係

CVE(Common Vulnerabilities and Exposures)は個別の脆弱性インスタンスを識別するものであり、CWEは脆弱性のタイプ(弱点の種類)を分類するものです。例えば、特定のWebアプリケーションで発見されたXSSの脆弱性にはCVE番号が割り当てられ、その脆弱性の種類としてCWE-79が紐付けられます。

この関係により、同じタイプの脆弱性がどれだけ頻繁に発生しているかを統計的に分析でき、開発組織は優先的に対処すべき弱点のパターンを特定できます。

CWEとCVSSの連携

CVSS(Common Vulnerability Scoring System)は脆弱性の深刻度をスコアリングするシステムです。CWEで分類された弱点タイプに基づいて、CVSSスコアの傾向を分析することで、特定の弱点タイプがどの程度の影響を与えるかを定量的に評価できます。

例えば、CWE-787(境界外書き込み)に分類されるCVEは、一般的にCVSSスコアが高い傾向にあり、これはメモリ破壊系の脆弱性が任意のコード実行に直結しやすいことを示しています。

CWEの活用シーン

CWEは、セキュアコーディングのガイドラインとして、開発チームがコーディング時に注意すべき弱点パターンを学習するために活用されます。また、SAST(静的アプリケーションセキュリティテスト)やDAST(動的テスト)ツールは、検出した問題をCWE番号で報告するため、組織横断的な脆弱性管理の共通基盤となっています。

さらに、調達要件コンプライアンス基準においても、CWEは重要な参照先です。PCI DSSやFedRAMPなどの規格では、特定のCWEに該当する弱点がないことを求める要件が含まれています。

🛡️

Security Measures

  • 01
    CWE Top 25に基づくコードレビューの実施:MITREが公開するCWE Top 25リストを参照し、自組織のコードベースに該当する弱点パターンがないか、定期的にコードレビューを実施してください。特にメモリ安全性、入力検証、認証・認可に関する弱点に重点を置きましょう。
  • 02
    SASTツールのCWEマッピング活用:静的解析ツール(SonarQube、Fortify、Checkmarxなど)が検出する問題をCWE番号で分類し、組織内の脆弱性傾向を分析してください。特定のCWEが頻出する場合は、開発者教育や設計パターンの見直しを検討しましょう。
  • 03
    セキュアコーディングガイドラインへのCWE統合:組織のコーディングガイドラインにCWE番号を明記し、各弱点パターンに対する具体的なコーディング規約を定めてください。開発者が日常的にCWEを意識した開発を行える環境を整備しましょう。
  • 04
    脆弱性トリアージにおけるCWE活用:発見された脆弱性をCWEで分類し、弱点タイプごとの修正優先度を設定してください。CWE Top 25に含まれる弱点タイプは、修正の優先度を高く設定することを推奨します。
  • 05
    開発者向けCWEトレーニングの定期実施:開発チームに対して、CWEの主要な弱点タイプとその防止策に関するトレーニングを定期的に実施してください。ハンズオン形式で実際の脆弱性コードを修正する演習が効果的です。
  • 06
    CI/CDパイプラインへのCWEチェック統合:継続的インテグレーション・デリバリーパイプラインにSAST/DASTツールを組み込み、CWE Top 25に該当する弱点が検出された場合はビルドを失敗させるゲートを設定してください。シフトレフトにより、早期段階での弱点排除を実現しましょう。
⚠️

Incidents

📋 Log4Shell脆弱性とCWE-917(2021年)

2021年12月に発見されたApache Log4jの脆弱性(CVE-2021-44228、通称Log4Shell)は、CWE-917(サーバーサイドの式言語インジェクション)に分類されました。JNDI Lookup機能を悪用することで、攻撃者はリモートからの任意のコード実行が可能でした。

この脆弱性はCVSSスコア10.0(最大値)を記録し、世界中の何百万ものサーバーに影響を及ぼしました。CWEによる分類により、同様のパターンを持つ他のライブラリ(式言語を評価する機能)にも注意が向けられ、包括的な対策が促進されました。

📋 Heartbleed脆弱性とCWE-126(2014年)

OpenSSLのHeartbleed脆弱性(CVE-2014-0160)は、CWE-126(バッファオーバーリード)に分類されました。TLSハートビート拡張の実装不備により、サーバーメモリの最大64KBを1回のリクエストで読み取ることが可能でした。

この脆弱性により、秘密鍵、ユーザー名、パスワードなどの機密情報がメモリから漏洩する危険がありました。CWE-126という分類により、境界チェック不備という根本原因が明確になり、同種の弱点を持つ他のソフトウェアの点検が促進されました。

📋 Equifax情報漏洩とCWE-502(2017年)

2017年に発生したEquifaxの大規模情報漏洩事件は、Apache Strutsの脆弱性(CVE-2017-5638)を悪用したもので、CWE-502(信頼できないデータのデシリアライゼーション)に分類されました。約1億4,700万人の個人情報が流出しました。

この事件は、CWEに基づく脆弱性管理の重要性を世界に知らしめました。既知のCWEパターンに該当する脆弱性にパッチが適用されていなかったことが根本原因であり、CWEを活用した体系的な脆弱性追跡と修正管理の必要性が強く認識されました。

🔗

Related Terms