摘要: 新發布的CWE4.6標准,加入了OWASP 2021 TOP10的視圖。
本文分享自華為雲社區《CWE 4.6 和 OWAPS TOP10(2021)》,作者: Uncle_Tom。
1. CWE 4.6
CWE的更新,並沒有因為疫情的影響,仍然保持着每年3-4個版本的更新速度,可見軟件安全的重要性。這個月初4.6版本如約而至。我們來看下這次的更新,都有哪些亮點。
1.1. CWE V4.5 vs V4.6
通常可以從兩個角度的對比CWE版本的變動,快速得到大致的差異信息。
1.1.1. CWE節點類型和數量的變動
每個CWE由一個唯一的編號表示一個弱點的分類節點,每個節點由他的類型確定它的節點種類,共有8種不同類型的節點類型。 所以每種節點類型數量的變化可以直接反映這個版本的變化大小和變動方式。 每個版本的都有一個鏈接反映節點數量的變化。
先來看下兩個版本CWE節點數量上的差異:
從這個表的差異,不難看出:
- 弱點(Weakness)增加了兩個。目前CWE已經經過了15年左右的發展,基本上處於穩定狀態,不太會有過多的CWE弱點類的節點增加;
- 視圖(View)增加了兩個。視圖是以不同的研究人員角度出發,對某些弱點的一個分類匯總的視圖。在視圖之下,通常是分類(Category)節點對某類弱點(Weakness)的一個分類。所以視圖的增加,通常會伴隨着分類(Category)節點的增加, 這次就增加了20個分類(Category)節點。
注,關於CWE節點的說明,請參看《話說CWE 4.2的新視圖》。
1.1.2. 從CWE XML schema變化看CWE 4.6的變動
CWE的所有信息是通過XML格式定義保存的,所以定義xml格式的schema文件xsd,就成了洞察CWE結構變化的最好方法。
每次CWE的版本,都會有一個鏈接來查看Schema的變化, 你也可以直接比較兩個版本的Schema。
- 比較兩個版本的schema文件,發現只有以下兩個變動,如下圖:
- 檢測方法枚舉值(Detection Method Enumeration)的變動
- 增加了"形式化驗證(Formal Verification)"。形式化的方法已經開始逐步從學術走向了實際應用, 但形式化的方法依然會帶來極高的驗證成本;
- 增加了"模擬/仿真(Simulation / Emulation)"。 通常這個方法用於硬件安全的驗證。
- 有效性枚舉值()的變動
- 增加了"不鼓勵的常見做法(Discouraged Common Practice)"。 也就是說這個安全消減措施的無效,不建議使用。避免了采取一些習慣性認為有效,實際上確無效的安全措施,防止習慣性思維導致的無效勞動。
1.1.3. 新增的CWE節點
- CWE-1341(重復釋放同一個資源或句柄(Multiple Releases of Same Resource or Handle))
如圖,CWE-1341(重復釋放同一個資源或句柄), 位於:CWE-710(編程規范違背) --> CWE-675(對資源的重復操作)下面。是我們熟悉的內存問題:CWE-415(雙重釋放)的上一級。 增加這個節點的原因,除了內存的雙重釋放,資源或文件句柄也存在着雙重釋放的問題。為了區分兩種不同的場景,在細分上增加了這個新節點。
例如下面的代碼,在第二次釋放文件句柄的時候,會返回一個錯誤值。
char b[2000]; FILE *f = fopen("dbl_cls.c", "r"); if (f) { b[0] = 0; fread(b, 1, sizeof(b) - 1, f); printf("%s\n'", b); int r1 = fclose(f); printf("\n-----------------\n1 close done '%d'\n", r1); int r2 = fclose(f); // Double close printf("2 close done '%d'\n", r2); }
- CWE-1342(瞬時執行后微架構狀態造成信息泄漏(Information Exposure through Microarchitectural State after Transient Execution))
處理器在不正確的微指令輔助(microcode assists)或預測執行(speculative execution)后,處理器沒有正確清除微架構狀態,從而導致信息泄漏。這種瞬時執行的痕跡可能會保留在微體系結構緩沖區中,從而導致微體系結構狀態發生變化,攻擊者可以使用側信道分析獲取敏感信息。例如,加載值注入 (LVI) REF-1202 可以利用將錯誤值直接注入中間加載和存儲緩沖區。
注:這個問題屬於CPU架構指令集和設計的問題,這個不是我的研究領域,跳過。
1.1.4. 新增的視圖
- CWE-1343(2021最重要的硬件弱點(Weaknesses in the 2021 CWE Most Important Hardware Weaknesses List))
這個不是我的研究領域,跳過。 - CWE-1344(OWASP 2021 TOP10 弱點(Weaknesses in OWASP Top Ten (2021)))
這個的視圖體現了OWASP 九月分發布的 OWASP TOP10 (2021)。 這個是OWASP 自2017 年之后,時隔四年,再次發布TOP10。接下來我們重點看下這個視圖。
2. CWE-1344 OWASP TOP10(2021)
Web應用程序安全性項目(Open Web Application Security Project (OWASP))是一個開放的社區, 該社區致力於使組織開發、購買和維護的應用程序和api,可以被信任。
OWASP已經先后在:2004,2007,2010,2013,2017,先后發布了OWASP TOP10,指出了Web應用軟件存在的高危安全問題,
並為每種漏洞按照其發生率、檢測能力、影響和可利用性設定了一個優先級排名,從而幫助組織按照漏洞的優先級,關注、理解、正確識別、減輕在應用程序中這些漏洞造成的危害。 同時也為檢測工具廠商對這些高危的安全問題的檢測提出了要求。
2.1. OWASP TOP10(2021)
2.2. OWASP2017和2021 TOP10的變化
OWASP2017和2021 TOP10的變化,如下圖:
2.2.1. A01:2021-中斷訪問控制
從第五位上升到第一位。數據表明,平均而言,3.81%的受測應用程序具有一個或多個常見CWE,其中CWE在此風險類別中的出現次數超過31.8萬次。映射到該問題的CWE多達34個,是映射CWE最多的一個分類。
2.2.2. A02:2021-加密故障
相較2017年上移一位,成為第二名,以前稱為A3:2017-敏感數據泄露,敏感數據泄露是問題的表現,而不是根本原因。更新后的名稱,側重於故障根因與加密相關的問題。此類別通常會導致敏感數據泄露或系統泄露。
2.2.3. A03:2021-注入
從2017年的第一位,滑落到第三位。應用程序對此類問題的測試覆蓋率達到94%,最大發生率為19%,平均發生率為3.37%,映射到這一類別的33個CWE在27.4萬次的應用中發生率第二高。在此版本中,跨站腳本問題歸於此類別的一個子類。
2.2.4. A04:2021-不安全的設計
這個是2021年的新類別,重點是與設計缺陷相關的風險。作為一個有"安全左移"追求的企業,需要更多的威脅建模、安全的設計模式和原則以及參考架構。
這里發散下,如果要從很大程度上解決軟件的安全問題,安全左移的概念不僅僅是指檢查的左移,而是更加向左,延伸到設計。這個也是上面提到的采用威脅建模、安全設計模式和原則,以及使用安全模塊,提前的完成軟件安全的縱深防御。Foritfy 的技術骨干Brian Chess 與 Jacob West寫過一本書《用靜態分析方法確保編程安全(Secure Programming with Static Analysis)》,書中就提到“一半的安全問題都源自軟件的設計,而非源碼。”。我們必須意識到,在沒有安全意識的設計人員開發出來的系統是非常的危險的。不安全的設計無法通過完美的實現來修復,安全起源於設計。
2.2.5. A05:2021-安全配置錯誤
從上一版的第六名上升到第五名。90%的應用程序都經過了某種形式的配置錯誤測試,平均發生率為 4.5%,並且有超過 20.8萬次 CWE 映射到此風險類別。隨着越來越多的人轉向高度可配置的軟件,這一類問題成上升趨勢並不奇怪。在此版本中,A4:2017-XML 外部實體(XXE)被歸為此類別的一個子類。
2.2.6. A06:2021-易受攻擊和過時的組件
2017年為"使用具有已知漏洞的組件",這一類別從2017年的第九位上升到第六位,是我們難以測試和評估風險的已知問題。它是唯一一個未將任何常見漏洞和披露(CVE) 映射到所包含的 CWE 的類別,因此漏洞利用和影響權重采用了默認值5.0。
2.2.7. A07:2021-標識和身份驗證失敗
2017是"身份驗證中斷",從第二個位置向下滑動到第七位。現在包括與標識失敗更相關的 CWE。這個類別仍然是前10名中不可或缺的一部分,標識和身份驗證的標准化驗證框架可用性的增強,似乎對這類問題的減少起到一定的幫助作用。
2.2.8. A08:2021-軟件和數據完整性故障
2021年的新類別,側重於在不驗證完整性的情況下做出與軟件更新、關鍵數據和 CI/CD 管道相關的假設。這類問題是CVE/CVSS影響度值最高的一個。在此版本中,A8:2017-不安全的反序列化並入到這個類別。
2.2.9. A09:2021-安全日志記錄和監控故障
2017的A10:2017-日志記錄和監控不足,從之前的第十位上升到第九位。此類別已擴展為包含更多類型的故障,測試具有挑戰性,並且在 CVE/CVSS 數據中不能很好地表示。但是,此類別中的故障可能會直接影響可見性、事件警報和取證。
2.2.10. A10:2021-服務器端請求偽造
2021新增加的類型。數據顯示,發生率相對較低,測試覆蓋率高於平均水平,漏洞利用和影響潛力的評分高於平均水平。
3. 參考
- https://cwe.mitre.org/data/reports/diff_reports/latest.html
- https://cwe.mitre.org/data/definitions/1344.html
- https://owasp.org/Top10/
- https://github.com/OWASP/Top10