脆弱性の種類を分類するための
「CWE
(Common Weakness Enumeration)
」
~その脆弱性とこの脆弱性は本当に同じですか?~
1
独立行政法人 情報処理推進機構 (IPA)
セキュリティセンター
情報セキュリティ技術ラボラトリー
2010年8月6日 公開
アジェンダ
1.
CWEを見たことありますか?
2.
CWEとは
3.
CWEの利用例
4.
CWEの活用方法
2
CWEを見たことありますか?
•
JVN iPediaの参考情報で
3
CWEを用いた脆弱性の分類が
をあることをご存知ですか?
CWEを見たことありますか?
•
リンクを辿ると脆弱性の種類に対する解説があります
4
CWEとは
CWEとは
みんなで使う脆弱性の分類
•
英名:Common Weakness Enumeration
•
和名:
共通
脆弱性タイプ一覧
•
CWEは
「みんなで使う脆弱性の分類」
–
脆弱性の分類にIDを付けて一意に識別する
•
「クロスサイト・スクリプティング」と言われるものの分類
どれが一緒で、どう対策が違う?
– reflected型 – non-persistent型 – persistent型 – stored型 – DOM Based – UTF-7型 – 文字コード型–
脆弱性の原因や対策等が書かれている
–
米国の非営利組織であるMITRE社が中心となり仕様策定が行われている
6
CWEとは
共通
脆弱性分類の意義
•
同じ意味の脆弱性の話をしてほしい
–
例えば・・・
•
クロスサイト・スクリプティング
•
バッファオーバーフロー
–
同じ言葉でも色々な意味がある
–
全般の話か各論の話か
•
これを解決するためにCWEでは
–
脆弱性毎にID(CWE-ID)を振って、一意に識別している
–
ツリー構造により、脆弱性毎の関連が分かるようになっている
•
「スタックベースのバッファオーバーフロー」はバッファオーバーフローの一種である
XSS全般の話? アンダーフロー? スタックベース? ヒープベース? 文字コード型? non-persistent 型?クロスサイト・スクリプティングの場合
バッファオーバーフローの場合
7
CWEとは
共通
脆弱性分類の意義
•
一意のIDが振られている
•
脆弱性毎の関連性が分かる!
– ツリー構造
を利用してそれぞれの脆弱性の関連性を分か
るようにしている
•
原因と対策が分かる!
–
それぞれのCWE-IDで原因や対策等が書かれている
•
みんなも使っている分類!
–
48の組織が関わって作成している(2010年7月現在)
–
28の組織がCWEの互換性を持つソフトウェアやサービスを
使用、またはその予定があることを表明している(2010
年7月現在)
8
CWEとは
CWEの概要(1)-1
•
CWEの構造(ID)
–
一意のIDが振られている
–
それぞれのIDにタイプがある
•
ビュー(View)
•
カテゴリ(Category)
•
脆弱性(Weakness)
–
クラス(Weakness Class)
–
ベース(Weakness Base)
–
バリアント(Weakness Variant)
•
複合要因(Compound Element)
–
コンポジット(Composite)
–
チェイン(Chain)
CWEの公式ページでは
それぞれの脆弱性タイプ
のマークがある
9
例) 「ヒープベースのバッファオーバーフロー(CWE-122)」は 「開発者向け(CWE-699)」のビューのツリーにおいて、「ソフトウェアの開発と配布・配置・設定(CWE-1)」のカテゴリ ⇒ 「コード(CWE-17)」のカテゴリ ⇒ 「ソースコード(CWE-18)」のカテゴリ ⇒ 「データの取り扱い(CWE-19)」のカテゴリ ⇒ 「インデックス化が可能なリソースの不適切なアクセス(範囲エラー) (CWE-118)」の脆弱性・クラス ⇒ 「メモリバッファの境界内の強制オペレーションの失敗 (CWE-119)」の脆弱性・クラス ⇒ 「バッファの終端後のメモリ配置に対するアクセス (CWE-788)」の脆弱性・ベースの下にある、脆弱性・バリアントである 同列に「スタックベースのバッファオーバーフロー(CWE-121)」と「バッファオーバーリード(CWE-126)」があるCWEとは
CWEの概要(1)-2
•
CWEの構造(ID)
名称
概要
例
ビュー
ある観点(対象の人や組織の観点等)からいくつかの脆弱性タイプを選
択して集めたもの。観点における脆弱性がリストアップされている。
「Graph」があるものはその脆弱性に関するツリーが存在する。
CWE-699:開発者向け CWE-1000:研究者向け CWE-629:OWASP Top10 CWE-635:NVDで使用カテゴリ
共通の特性を持つ脆弱性タイプのグループ化した親ID.
CWE-16:環境設定 CWE-189:数値処理の問題脆弱性
個々の脆弱性を示したもの。次の三つの属性がある。
-クラス
最も抽象的な脆弱性の属性。大まかな脆弱性の属性。
CWE-20:不適切な入力確認 CWE-200:情報漏えいベース
特定の環境や技術に依存しない脆弱性。
CWE-79:XSSCWE-89:SQLインジェクションバリアント
特定の環境や技術に依存する脆弱性。
CWE-85:Doubled Character XSS Manipulations複合要因
複数の要因が複合した脆弱性。次の二つの属性がある。
-コンポジット
複数の脆弱性が混合して発生する脆弱性。
CWE-384:Session FixationCWE-352:CSRF (*1)(*2)
チェイン
ある問題が原因で別の問題が連鎖して発生する脆弱性。
CWE-699にない分類
CWE-680:Integer Overflow to Buffer Overflow
(*1) CWE-472:External Control of Assumed-Immutable Web Parameter, CWE-346: Origin Validation Error, CWE-446: Unintended Proxy/Intermediaryの複合
(*2) CWE-642: External Control of Critical State Data, CWE-613: Insufficient Session Expiration, CWE-346:Origin Validation Error, CWE-441: Unintended Proxy/Intermediaryの複合
CWEとは
CWEの概要(2)
•
CWEの構造(ビュー )
–
ビューでは、脆弱性の関連が分かるよう、IDをツリー構造に
している(一部はツリー構造とせず、リストのみを提供しているビューもある)
CWE-635におけるツリー構造 (JVN iPediaが使用する脆弱性タイプに関連するツリー) CWE-699 におけるツリー構造 (一部) http://cwe.mitre.org/data/graphs/699.html11
CWEとは
CWEの概要(3)-1
•
CWEの構造(ビュー以外
)
–
それぞれのIDに書かれていること
12
解説
被害の緩和策
脆弱性の発生時期
脆弱なコード例
CWEとは
CWEの概要(3)-2
•
CWEの構造(ビュー以外
)
–
それぞれのIDに主に書かれていること
13
項目
記載内容
解説
脆弱性の要約・詳細な解説
別名
他の呼び方(例:クロスサイト・スクリプティングの場合、「XSS」等)
脆弱性の発生時期
設計の時に発生するか実装の時に発生するか、それとも両方か
該当するプラットフォーム
分類(例:ウェブサーバ)や言語等
一般的な影響
機密性・完全性・可溶性に対する影響について
攻撃を受ける可能性
高いか低いか
脆弱なコード例
どのようにすると脆弱なコードになってしまうか
被害の緩和策
どのようにすれば、当該脆弱性を回避できるか、対策ができるか
関係性
他のCWEとどのような関係があるか
影響を受けるシステムリソース
メモリで発生するのか等
他組織での分類
他の組織ではどのような分類をしているか
関連する攻撃パターン
CAPEC(Common Attack Pattern Enumeration and Classification)の分類
参照
参考資料
CWEのおさらい
14
•
CWEのポイント
–
一意のIDが振られている
–
IDにそれぞれタイプがある
•ビューのIDではツリー構造
を作成し、脆弱性の関連が
分かるようになっている
•ビュー以外では脆弱性
の説明
15
CWEの利用例
IPAの場合
•
IPAでは、NVD
*3
で使っているCWE(
CWE-635)と
同じものを使用。
16
(*3)NVD:National Vulnerability Database。NISTが運営する脆弱性データベース。 (*4)米国政府向けの技術支援や研究開発を行う非営利組織。
•
JVN iPediaとMyJVNで採用
–
CWE互換を達成!
•
MITRE
*4
に必要な手続きをすれば、正式に互換性のあるものと認
定される。
–
つまり、
NVDとJVN iPediaのデータは比較可能
http://www.ipa.go.jp/security/vuln/CWE.htmlCWEの利用例
世界の場合
•
CWE/SANS TOP25
•
概要:「最も危険なプログラミングエラー25項目」として公開され
ている文書。
–
ワシントンDCで米国をはじめとする各国のサイバーセキュリティ会社に所属す
る30名以上の専門家でまとめたもの。
•
25項目にCWEを使用している。
17
<25項目の内訳>
脆弱性クラス:12項目
脆弱性ベース:11項目
複合要因コンポジット:2項目
大まかな分類をして、
開発者向けの要点をまとめている。
引用資料: The SANS™ Institute :CWE/SANS最も危険なプログラミングエラーTOP 25 http://www.sans.org/top25-programming-errors/2009/top25_japanese.pdf
CWEの利用例
世界の場合
•
OWASP
*5
Top 10
–
ウェブアプリケーションにおける危険な脆弱性のトップ10
を出している。
•
トップ10の脆弱性に、それぞれCWEのIDが関連付けている。
•
http://www.owasp.org/index.php/Top_10_2010
18
(*5)OWASP(Open Web Application Security Project):世界中のボランティアによるプロ ジェクト。ウェブアプリケーションにおけるセキュリティの資料の公開等を行う
引用資料: OWASP Foundation Top 10 2010-A1-Injection http://www.owasp.org/index.php/Top_10_2010-A1