情報セキュリティ

共通脆弱性タイプ一覧CWE概説

CWE(Common Weakness Enumeration)
~脆弱性の種類を識別するための共通の脆弱性タイプの一覧~

共通脆弱性タイプ一覧CWE(Common Weakness Enumeration)(*1)は、ソフトウェアにおけるセキュリティ上の弱点(脆弱性)の種類を識別するための共通の基準を目指しています。

1999年頃から米国政府の支援を受けた非営利団体のMITRE(*2)が中心となり仕様策定が行われ、2006年3月に最初の原案が公開されました。その後、40を超えるベンダーや研究機関が協力して仕様改善や内容拡充が行われ、2008年9月9日にCWEバージョン1.0が公開されました。 

CWEでは、SQLインジェクション、クロスサイト・スクリプティング、バッファオーバーフローなど、多種多様にわたるソフトウェアの脆弱性を識別するための、脆弱性の種類(脆弱性タイプ)の一覧を体系化して提供しています。CWEを用いると、ソフトウェア開発者やセキュリティ専門家などに次のようなメリットがあります。

  1. ソフトウェアのアーキテクチャ、デザイン、コードに内在する脆弱性に関して、共通の言葉で議論できるようになる。
  2. 脆弱性検査ツールなど、ソフトウェアのセキュリティを向上させるための、ツールの標準の評価尺度として使用できる。
  3. 脆弱性の原因を認識し、脆弱性の低減を行い、再発を防止するための共通の基準として活用できる。

現在、CWEは、NIST(*3)のNVD(*4)、OWASP(*5)のTop Ten Project(*6)や、いくつかのセキュリティベンダーなどで実際に活用されています。

CWEにはCWE互換認定の制度があり、脆弱性検査ツールや脆弱性対策情報提供サービス等がCWE識別子の正確な表示、CWE識別子による情報の検索などの機能要件を満たし、MITRE社へ申請するとCWE互換認定が受けられます。CWE互換認定を受けると、MITRE社のウェブサイトで紹介される、CWEのロゴが使用できる等のメリットがあります。

JVN iPedia(*7)、MyJVN(*8)もCWE互換認定に向けて、2008年10月にMITRE社へCWE互換を宣言しました。

本資料はMITREから公開されたCWE Version 1.5の資料を基に作成しました。詳細は、MITREの「CWE List」 を参照下さい。

1. CWEの構造

CWEでは多種多様な脆弱性の種類を脆弱性タイプとして分類し、それぞれにCWE識別子(CWE-ID)を付与して階層構造で体系化しています。上位層に近いほど抽象的な脆弱性タイプを表し、下位層にいくほど具体的な脆弱性タイプや個々の脆弱性を表しています。

脆弱性タイプは、ビュー(View)、カテゴリー(Category)、脆弱性(Weakness)、複合要因(Compound Element)の4種類に分類されます。現在、ビュー(View)として22個、カテゴリー(Category)として105個、脆弱性(Weakness)として638個、複合要因(Compound Element)として12個、合計777個の脆弱性タイプが分類され一覧となっています。

(1) ビュー(View)

ある観点からいくつかの脆弱性タイプを選択して集めたものです。
例えば、NISTでは、実際に公表されている脆弱性を考慮し、CWEの中から19個の脆弱性タイプを選択してNVDに掲載しています(CWE Cross Section Mapped into by NVD)。この19個の脆弱性タイプを集めたビュー(View)にCWE-635のCWE識別子が割り当てられています。
この他、開発者の観点から脆弱性タイプを集めたビュー(View)にCWE-699、研究者の観点のものにCWE-1000、C言語に起因するものにCWE-658、Java言語に起因するものにCWE-660などが割り当てられています。

(2) カテゴリー(Category)

共通の特性を持つ脆弱性タイプをグループ化したものです。
例えば、CWE-310の暗号の問題に関連する脆弱性、CWE-355のユーザインターフェースに関連する脆弱性が該当します。

(3) 脆弱性(Weakness)

個々の脆弱性を表したもので、クラス(Class)、ベース(Base)、バリアント(Variant)の属性が付与されています。
クラス(Class)は、最も抽象的な脆弱性の属性です。例えば、CWE-362の競合状態の脆弱性が該当します。
ベース(Base)は、特定のリソースや技術に依存しない脆弱性の属性です。例えば、CWE-567の共有データへの非同期アクセスの脆弱性が該当します。
バリアント(Variant)は、個々のリソースや技術、コンテキストなどが特定できるような脆弱性の属性です。例えば、CWE-488の異なるセッション間で適切にセッションを識別できないことによる情報漏えいの脆弱性が該当します

(4) 複合要因(Compound Element)

複数の要因が複合した脆弱性を表したもので、コンポジット(Composite)とチェイン(chain)の属性が付与されています。
コンポジット(Composite)は、複数の脆弱性が混合して発生する脆弱性の属性です。例えば、CWE-352のクロスサイト・リクエスト・フォージェリ(CSRF)の脆弱性が該当します。
チェイン(chain)は、ある問題が原因で別の問題が連鎖して発生する脆弱性の属性です。例えば、CWE-680の整数オーバーフローの発生によるバッファオーバーフローの脆弱性が該当します。

2. CWEが提供している脆弱性タイプ一覧の内容

CWEが提供している脆弱性タイプ一覧のリスト(CWE List)には、CWE識別子(CWE-ID)ごとに様々な情報が記載されています。
脆弱性の概要、攻撃の受けやすさ、一般的な脅威、脆弱性の軽減策、脆弱性の発生する具体的なコーディング例、当該脆弱性に起因する具体的な事例の紹介などの情報が整理されています。
利用者は、脆弱性を識別し、脆弱性の低減を行い、再発を防止するための辞書として活用することができます。

3. IPAのCWEの適用について

IPAでは、NVDが使用している脆弱性分類(CWE-635)を参考に、脆弱性対策情報データベース「JVN iPedia」(*7)で公開するそれぞれの脆弱性対策情報の参考情報欄に、CWEの脆弱性タイプを掲載する試行を2008年9月10日から開始しました。

その後、CWEの表示・検索などCWE互換を宣言するための要件を整備し、2008年10月3日よりCWEの適用を開始しました。次のMITREのページでも紹介されています。

また、2008年10月23日に公開した脆弱性対策情報収集ツール「MyJVN」(*8)でもCWEを適用しています。
CWE互換を「宣言」する必須要件である「CWE検索」「CWE表示」「CWE文書整備」「対応付け」については、表1に示す機能で実現しています。 

表1.JVN iPedia、MyJVNでの要件対応状況

CWE検索

対応するサービス

JVN iPedia、
MyJVN共通

実現方法

脆弱性対策情報データベースJVN iPediaの検索機能により、利用者はCWE識別子をキーワードとして対応する脆弱性対策情報が検索できます。

CWE表示

対応するサービス

JVN iPedia

実現方法

各脆弱性対策情報の参考情報欄において、CWE識別子を表示しています。

CWE表示

対応するサービス

MyJVN

実現方法

各脆弱性対策情報 詳細情報のアドバイザリ情報、参考情報において、CWE識別子を表示しています。

CWE文書整備

対応するサービス

JVN iPedia、
MyJVN共通

実現方法

本資料が、CWEおよびCWE互換、CWE関連機能の実現方法についての文書となります。

対応付け

対応するサービス

JVN iPedia、
MyJVN共通

実現方法

JVN iPediaのJVNRSS中のセキュリティ情報の識別番号を格納するsec:identifierにJVN iPediaのIDを記載し、関連するセキュリティ情報のURLなどを格納するsec:referenceにCWE識別子を記載することにより、JVN iPediaのIDとCWE識別子の対応付け結果を提示しています。

図1は、CWEの階層構造図「PDFs with Graphical Depictions of CWE (1.5)」の中から開発者向けの階層構造図「Development View with Abstractions Highlighted(PDF:58KB)」を参照し、JVN iPediaに掲載する脆弱性タイプに関連するものを抜き出して表した階層構造図です。黄色で表示したものがJVN iPediaが使用する脆弱性タイプです。 今後、実際に公表される脆弱性を考慮し、脆弱性の事例の多いものは脆弱性の原因に着目して、より下位層の脆弱性タイプを選択して詳細化を図るなど、検討を行っていきます。

  • 図1. NISTのNVDが使用しているCWEの脆弱性タイプ
    図1. JVN iPediaに掲載するCWEの脆弱性タイプの階層構造図

4. JVN iPediaが使用する脆弱性タイプ

表2にJVN iPediaが使用する脆弱性タイプの一覧を示します。概要・対策方法欄に、IPAの普及啓発資料「知っていますか?脆弱性」や「安全なウェブサイトの作り方」、「セキュア・プログラミング講座」の該当する箇所を示してありますのでご活用下さい。
なお、表2の#20~#23はCWE-635で分類できないもので、#20はCWE-635以外のCWE分類に該当するもの、#21はCWEで分類できないもの、#22は分類するための情報が不足しているもの、#23はシステム設計上の問題です。 

表2. JVN iPediaが使用する脆弱性タイプ

#1 環境設定

CWE識別子
概要・対策方法

ソフトウェアの設定に関する脆弱性

#2 不適切な入力確認

CWE識別子
概要・対策方法

#3 パス・トラバーサル

CWE識別子
概要・対策方法

#4 リンク解釈の問題

CWE識別子
概要・対策方法

#5 OSコマンド・インジェクション

CWE識別子
概要・対策方法

#6 クロスサイト・スクリプティング(XSS)

CWE識別子
概要・対策方法

#7 SQLインジェクション

CWE識別子
概要・対策方法

#8 コード・インジェクション

CWE識別子
概要・対策方法

#9 バッファエラー

CWE識別子
概要・対策方法

#10 書式文字列の問題

CWE識別子
概要・対策方法

#11 数値処理の問題

CWE識別子
概要・対策方法

#12 情報漏えい

#13
証明書・パスワード管理

#14 認可・権限・アクセス制御

CWE識別子
概要・対策方法

#15 不適切な認証

CWE識別子
概要・対策方法

#16 暗号の問題

#17 クロスサイト・リクエスト・フォージェリ(CSRF)

CWE識別子
概要・対策方法

#18 競合状態

#19 リソース管理の問題

#20 その他

CWE識別子

CWE-Other

概要・対策方法

CWE-635(#1~#19)以外のCWE分類

#21 CWE以外

CWE識別子

CWE-nocwe

概要・対策方法

CWEで分類できない脆弱性

#22 情報不足

CWE識別子

CWE-noinfo

概要・対策方法

分類するための情報が不足

#23 設計上の問題

CWE識別子

CWE-DesignError

概要・対策方法

システム設計上の問題

  1. 注)

5. 2016年12月以降のIPAにおけるCWEの運用について

IPAでは、一般に公開されている脆弱性対策情報を収集し、蓄積している脆弱性対策情報データベース「JVN iPedia」を運用しています。CWEの活用方法の一つとして、JVN iPediaに登録されている脆弱性対策情報毎にCWEを付与しています。
2016年11月時点で、脆弱性対策情報の収集元としている組織において、3章、4章に記載しているCWE以外も利用され、広く活用されています。
そこで、2016年12月からJVN iPediaでは、3章、4章に記載しているCWEに加えて脆弱性対策情報の収集元に記載されているCWEも付与しています。本CWEの付与に伴い、IPAが提供しているサービスにおいて以下が可能となっています。

  1. JVN iPedia
    • ・「脆弱性対策情報データベース検索」機能にて付与したCWEを使っての検索可能
    • ・JVNDBRSSをRSSリーダー等で読み込むことで、付与したCWEを確認可能
  2. MyJVN API
    • ・getVulnOverviewList、getVulnDetailInfo、getStatistics APIにて、付与したCWEを取得可能

なお、追加で付与しているCWEについては、NVDで使用されるCWEの情報等を参考にしています。

脚注

  1. (*1)
  2. (*2)
  3. (*3)
  4. (*4)
  5. (*5)
  6. (*6)
  7. (*7)
  8. (*8)

お問い合わせ先

IPA セキュリティセンター(IPA/ISEC)

  • E-mail

    vuln-inqアットマークipa.go.jp

更新履歴

  • 2018年5月31日

    お問い合わせ先を更新

  • 2016年12月5日

    5章「2016年12月以降のIPAにおけるCWEの運用について」を追加

  • 2015年7月22日

    参考情報を追加

  • 2014年3月20日

    参考情報を追加

  • 2010年6月24日

    参考情報を追加

  • 2010年2月25日

    参考情報を追加しました。

  • 2009年8月5日

    CWEの1.5版を適用しました。

  • 2009年6月18日

    4章のCWE識別子のリンク先を、JVN iPediaのCWE翻訳ページに変更しました。

  • 2009年6月3日

    CWEの1.4版に合わせ更新しました。

  • 2008年9月10日

    掲載