剖析CWE視圖的層次定義和解析方式

摘要:CWE做爲軟件缺陷分類的重要標準, 對安全研究、安全標準、缺陷管理起了重要的紐帶作用。CWE通過編號的類型(類缺陷、基礎缺陷和變種缺陷等)形成了多層次的缺陷類型劃分體系。本文進一步剖析了CWE視圖的層次之間的定義和解析方式。

本文分享自華爲雲社區《CWE視圖層級關係的解析 之 CWE節點的存儲和定義》,作者:Uncle_Tom。

1. CWE的視圖

CWE做爲軟件缺陷分類的重要標準, 對安全研究、安全標準、缺陷管理起了重要的紐帶作用。CWE使代碼缺陷不同領域的研究人員在交流安全問題時,能夠採用相同的定義,減少了歧義性。

CWE通過編號的類型(類缺陷、基礎缺陷和變種缺陷等)形成了多層次的缺陷類型劃分體系。

CWE按照使用者視角, 給出了不同的CWE視圖. CWE提供了三大類的視圖.

1.1. 嚮導視圖(Navigate CWE)

CWE提供了:

  • 研究者:CWE-1000 VIEW: Research Concepts
    該視圖旨在促進對弱點的研究,包括弱點之間的相互依賴性,並可用來系統地找出CWE內部的理論差距。該視圖面向的是學術研究人員、漏洞分析人員和評估工具廠商。
    它對弱點進行了分類,在很大程度上忽略瞭如何檢測它們,它們出現在代碼中的什麼地方,以及它們何時被引入軟件開發生命週期。相反,它主要是根據軟件行爲的抽象來組織的。這種分類方法不關心缺陷的檢測方法,缺陷在代碼中的位置,在軟件開發生命週期中何時引入缺陷。該視圖主要基於對軟件行爲進行抽象描述的方法組織歸類。
  • 軟件開發: CWE-699 VIEW: Software Development
    該視圖圍繞軟件開發中經常使用或遇到的弱點。因此該視圖可以用於開發人員、教育工作者和評估供應商。分類基礎是軟件開發中經常使用和碰到的概念, 它提供了多種類別,旨在簡化導航、瀏覽和映射。
  • 硬件設計: CWE-1194 VIEW: Hardware Design

1.2. 擴展試圖(External Mappings)

基於一些外部組織生成的視圖. 這裏有我們熟悉的CWE TOP 25,OWASP TOP 10,以及 SEC CERT的編程規範和CISQ 質量測量標準等。

1.3. 幫助試圖(Helpful Views)

這裏基於特定的標準提供了特定領域的試圖.

1.4. 過期的視圖(Obsolete Views)

因爲新的視圖發佈,而不再使用的視圖, 例如以往的CWE TOP 25, OWASP TOP 10等.

2. CWE的存儲結構

2.1. CWE定義的xml schema文件

CWE 每個版本的所有信息是存放在一個xml文件中。xml中各個字段的格式和定義是由一個xsd文件來定義xml的schema。這些兩個文件可以從CWE的下載頁面得到

我們來看下視圖和具體的CWE的存儲關係是怎麼定義在schema中的。

2.2. CWE xml文件的框架(Weakness_Catalog節點)

這個節點下定義了組成xml文件的四個主要節點:

  • Weaknesses:各個CWE的定義,由WeaknessType類型具體定義;
  • Categories:弱點的分類定義,由CategoryType類型具體定義;
  • Views:弱點視圖的定義,由ViewType類型具體定義;
  • External_References: 外部參考信息,由ExternalReferenceType類型具體定義。

接下來我們重點說下四個節點中的:Weaknesses和Views。

2.3. 弱點節點(Weaknesses)定義

Weaknesses的定義是由WeaknessType類型定義的。

2.3.1. 弱點類型(WeaknessType)的定義

這個節點下定義每個CWE弱點的主要地方,這裏有我們瞭解的必須的節點,例如CWE的ID,名字(Name), 描述(Description)等,以及組成每個CWE的其他節點的定義。

這裏我們重點關注CWE間的關係:Related_WeaknessesType。

2.3.2. 弱點關係類型(Related_WeaknessesType)的定義

這個節點定義個當前CWE在不同視圖下與其他節點的關聯關係。主要字段包括:

  • Nature: 關係類型,由另一個枚舉(RelatednatureEnumeration)定義。見下圖:

  • CWE_ID: 與之關聯的CWE編號ID;
  • VIEW_ID: 與之關聯的CWE視圖(View)編號(ID);

通常這裏只定義父節點,也就是當前節點在視圖(VIEW_ID)中的父節點(Nature爲ChildOf)的CWE節點是CWE_ID。

2.4. 視圖節點(Views)定義

Views的定義是由ViewType類型定義的。

2.4.1. 視圖類型(ViewType)的定義

這裏定義了視圖的主要組成:

  • ID:視圖的ID;
  • Name: 視圖的名字;
  • Members:視圖的成員,由RelationshipsType類型具體定義。

2.4.2. 視圖節點關係類型(RelationshipType)的定義

該類型具體的定義了視圖的成員,以及和視圖成員之間的關係。

  • Has_Member: 由結構體Member_Type定義,具體如下圖:

每個視圖成員由成員的CWE_ID,和所屬的視圖編號View_ID組成。

2.5. CWE層級關係的舉例

2.5.1. 研究者視圖CWE-1000

  • 研究者視圖CWE-1000頁面關係展示

從這個圖示可以看到編號:CWE-1000的研究者視圖由以下節點組成:

  • 視圖的成員:
    • CWE-284:訪問控制不恰當(Improper Access Control);
    • CWE-435: 交互錯誤(Improper Interaction Between Multiple Correctly-Behaving Entities);
    • CWE-664:在生命週期中對資源的控制不恰當(Improper Control of a Resource Through its Lifetime);
  • 視圖的子節點:
    這裏以CWE-120爲例,從圖中可以看到:
    • CWE-120:未進行輸入大小檢查的緩衝區拷貝(傳統緩衝區溢出),它的父節點是:CWE-119;
    • CWE-119:內存緩衝區邊界內操作的限制不恰當,它的父節點是: CWE-118;
    • CWE-118: 對可索引資源的訪問不恰當(越界錯誤), 它的父節點是: CWE-664;
    • CWE-664:在生命週期中對資源的控制不恰當,它的父節點是: CWE-1000;
    • CWE-1000:研究者視圖。

2.5.2. 對應的xml定義

  • 研究者視圖CWE-1000的定義

  • CWE-120的定義

  • CWE-119的定義

  • CWE-118的定義

3. 小結

  • 介紹了CWE的四種主要視圖類型:嚮導視圖、擴展試圖、幫助試圖和過期的視圖;
  • 介紹了CWE通過xsd完成xml存儲的定義方式,重點介紹瞭如何建立各個CWE之間的層級關係;
  • 以CWE120爲例說明了CWE在xml文件中如何建立與CWE-1000之間的層級關係。

 

點擊關注,第一時間瞭解華爲雲新鮮技術~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章