情報セキュリティ
CWE(Common Weakness Enumeration)
~脆弱性の種類を識別するための共通の脆弱性タイプの一覧~
共通脆弱性タイプ一覧CWE(Common Weakness Enumeration)(*1)は、ソフトウェアにおけるセキュリティ上の弱点(脆弱性)の種類を識別するための共通の基準を目指しています。
1999年頃から米国政府の支援を受けた非営利団体のMITRE(*2)が中心となり仕様策定が行われ、2006年3月に最初の原案が公開されました。その後、40を超えるベンダーや研究機関が協力して仕様改善や内容拡充が行われ、2008年9月9日にCWEバージョン1.0が公開されました。
CWEでは、SQLインジェクション、クロスサイト・スクリプティング、バッファオーバーフローなど、多種多様にわたるソフトウェアの脆弱性を識別するための、脆弱性の種類(脆弱性タイプ)の一覧を体系化して提供しています。CWEを用いると、ソフトウェア開発者やセキュリティ専門家などに次のようなメリットがあります。
現在、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」 を参照下さい。
CWEでは多種多様な脆弱性の種類を脆弱性タイプとして分類し、それぞれにCWE識別子(CWE-ID)を付与して階層構造で体系化しています。上位層に近いほど抽象的な脆弱性タイプを表し、下位層にいくほど具体的な脆弱性タイプや個々の脆弱性を表しています。
脆弱性タイプは、ビュー(View)、カテゴリー(Category)、脆弱性(Weakness)、複合要因(Compound Element)の4種類に分類されます。現在、ビュー(View)として22個、カテゴリー(Category)として105個、脆弱性(Weakness)として638個、複合要因(Compound Element)として12個、合計777個の脆弱性タイプが分類され一覧となっています。
ある観点からいくつかの脆弱性タイプを選択して集めたものです。
例えば、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などが割り当てられています。
共通の特性を持つ脆弱性タイプをグループ化したものです。
例えば、CWE-310の暗号の問題に関連する脆弱性、CWE-355のユーザインターフェースに関連する脆弱性が該当します。
個々の脆弱性を表したもので、クラス(Class)、ベース(Base)、バリアント(Variant)の属性が付与されています。
クラス(Class)は、最も抽象的な脆弱性の属性です。例えば、CWE-362の競合状態の脆弱性が該当します。
ベース(Base)は、特定のリソースや技術に依存しない脆弱性の属性です。例えば、CWE-567の共有データへの非同期アクセスの脆弱性が該当します。
バリアント(Variant)は、個々のリソースや技術、コンテキストなどが特定できるような脆弱性の属性です。例えば、CWE-488の異なるセッション間で適切にセッションを識別できないことによる情報漏えいの脆弱性が該当します
複数の要因が複合した脆弱性を表したもので、コンポジット(Composite)とチェイン(chain)の属性が付与されています。
コンポジット(Composite)は、複数の脆弱性が混合して発生する脆弱性の属性です。例えば、CWE-352のクロスサイト・リクエスト・フォージェリ(CSRF)の脆弱性が該当します。
チェイン(chain)は、ある問題が原因で別の問題が連鎖して発生する脆弱性の属性です。例えば、CWE-680の整数オーバーフローの発生によるバッファオーバーフローの脆弱性が該当します。
CWEが提供している脆弱性タイプ一覧のリスト(CWE List)には、CWE識別子(CWE-ID)ごとに様々な情報が記載されています。
脆弱性の概要、攻撃の受けやすさ、一般的な脅威、脆弱性の軽減策、脆弱性の発生する具体的なコーディング例、当該脆弱性に起因する具体的な事例の紹介などの情報が整理されています。
利用者は、脆弱性を識別し、脆弱性の低減を行い、再発を防止するための辞書として活用することができます。
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に示す機能で実現しています。
CWE検索 |
|
---|---|
CWE表示 |
|
CWE表示 |
|
CWE文書整備 |
|
対応付け |
|
図1は、CWEの階層構造図「PDFs with Graphical Depictions of CWE (1.5)」の中から開発者向けの階層構造図「Development View with Abstractions Highlighted(PDF:58KB)」を参照し、JVN iPediaに掲載する脆弱性タイプに関連するものを抜き出して表した階層構造図です。黄色で表示したものがJVN iPediaが使用する脆弱性タイプです。 今後、実際に公表される脆弱性を考慮し、脆弱性の事例の多いものは脆弱性の原因に着目して、より下位層の脆弱性タイプを選択して詳細化を図るなど、検討を行っていきます。
表2にJVN iPediaが使用する脆弱性タイプの一覧を示します。概要・対策方法欄に、IPAの普及啓発資料「知っていますか?脆弱性」や「安全なウェブサイトの作り方」、「セキュア・プログラミング講座」の該当する箇所を示してありますのでご活用下さい。
なお、表2の#20~#23はCWE-635で分類できないもので、#20はCWE-635以外のCWE分類に該当するもの、#21はCWEで分類できないもの、#22は分類するための情報が不足しているもの、#23はシステム設計上の問題です。
#1 環境設定 |
|
---|---|
#2 不適切な入力確認 |
|
#3 パス・トラバーサル |
|
#4 リンク解釈の問題 |
|
#5 OSコマンド・インジェクション |
|
#6 クロスサイト・スクリプティング(XSS) |
|
#7 SQLインジェクション |
|
#8 コード・インジェクション |
|
#9 バッファエラー |
|
#10 書式文字列の問題 |
|
#11 数値処理の問題 |
|
#12 情報漏えい |
|
#13 |
|
#14 認可・権限・アクセス制御 |
|
#15 不適切な認証 |
|
#16 暗号の問題 |
|
#17 クロスサイト・リクエスト・フォージェリ(CSRF) |
|
#18 競合状態 |
|
#19 リソース管理の問題 |
|
#20 その他 |
|
#21 CWE以外 |
|
#22 情報不足 |
|
#23 設計上の問題 |
|
IPAでは、一般に公開されている脆弱性対策情報を収集し、蓄積している脆弱性対策情報データベース「JVN iPedia」を運用しています。CWEの活用方法の一つとして、JVN iPediaに登録されている脆弱性対策情報毎にCWEを付与しています。
2016年11月時点で、脆弱性対策情報の収集元としている組織において、3章、4章に記載しているCWE以外も利用され、広く活用されています。
そこで、2016年12月からJVN iPediaでは、3章、4章に記載しているCWEに加えて脆弱性対策情報の収集元に記載されているCWEも付与しています。本CWEの付与に伴い、IPAが提供しているサービスにおいて以下が可能となっています。
なお、追加で付与しているCWEについては、NVDで使用されるCWEの情報等を参考にしています。
IPA セキュリティセンター(IPA/ISEC)
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日
掲載