1. 程式人生 > 其它 >剖析CWE檢視的層次定義和解析方式

剖析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之間的層級關係。

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