摘要:CWE最危險的25種軟件缺陷,是NVD過去兩年中遇到的最常見和影響最大的問題指示性的列表。 CWE Top25 可以幫助開發人員、測試人員和用戶,以及項目經理、安全研究人員和教育工作者深入瞭解最嚴重和當前的安全漏洞。
本文分享自華爲雲社區《CWE發佈2021年最危險的25種軟件缺陷》,作者: Uncle_Tom。
1. CWE 4.5發佈
7月20日,CWE發佈了今年的第二個版本CWE 4.5版本。相比CWE 4.4, 這次新增4個缺陷和1個視圖,還對缺陷的名稱、描述和關係等做了139處重要改動。
主要的改動有:
- 對不再使用的CWE編號,在CWE的名稱前加上了“DEPRECATED: ”。這樣使用者可以不用再看狀態,就可以知道這個CWE編號已經停止使用了;
舉例:
- 記錄CWE變更記錄的節點“Content_History”,擴展到了頂層節點Views, Categories, 和Weaknesses。這樣可以清楚的看到每個節點在CWE版本演變過程中的變化情況。關於CWE節點的介紹可以參考《話說CWE 4.2的新視圖》;
- 語言枚舉(LanguageNameEnumeration)的語言中,增加了Rust, 這樣在應用平臺(Applicable_Platform)和樣例(Demonstrative_Example)節點就增加了Rust語言。 目前CWE枚舉的語言有29中之多,基本上涵蓋了我們業界的主要開發語言。從這個變化也可以看到Rust語言在業界的應用越來越多了;
<xs:simpleType name="LanguageNameEnumeration"> <xs:annotation> <xs:documentation>The LanguageNameEnumeration simple type contains a list of values corresponding to different source code languages.</xs:documentation> </xs:annotation> <xs:restriction base="xs:string"> <xs:enumeration value="Ada"/> <xs:enumeration value="ASP"/> <xs:enumeration value="ASP.NET"/> <xs:enumeration value="Basic"/> <xs:enumeration value="C"/> <xs:enumeration value="C++"/> <xs:enumeration value="C#"/> <xs:enumeration value="COBOL"/> <xs:enumeration value="Fortran"/> <xs:enumeration value="F#"/> <xs:enumeration value="Go"/> <xs:enumeration value="HTML"/> <xs:enumeration value="Java"/> <xs:enumeration value="JavaScript"/> <xs:enumeration value="JSP"/> <xs:enumeration value="Objective-C"/> <xs:enumeration value="Pascal"/> <xs:enumeration value="Perl"/> <xs:enumeration value="PHP"/> <xs:enumeration value="Python"/> <xs:enumeration value="Ruby"/> <xs:enumeration value="Rust"/> <xs:enumeration value="Shell"/> <xs:enumeration value="SQL"/> <xs:enumeration value="Swift"/> <xs:enumeration value="VB.NET"/> <xs:enumeration value="Verilog"/> <xs:enumeration value="VHDL"/> <xs:enumeration value="XML"/> <xs:enumeration value="Other"/> </xs:restriction> </xs:simpleType>
- 增加了圖像(<img>)節點, 這樣可以CWE中通過圖片引用來更好的對問題進行描述;
例如:CWE-1339 Insufficient Precision or Accuracy of a Real Number 在說明 Jean-Michel Muller實數精度計算問題時,通過圖的方式展示數據的變化,讓人更容易理解問題。
- 新增的四個缺陷節點是:
- CWE-1335: Incorrect Bitwise Shift of Integer
- CWE-1336: Improper Neutralization of Special Elements Used in a Template Engine
- CWE-1339: Insufficient Precision or Accuracy of a Real Number
- CWE-1351: Improper Handling of Hardware Behavior in Exceptionally Cold Environments
- 新增的視圖是:
- CWE-1337: Weaknesses in the 2021 CWE Top 25 Most Dangerous Software Weaknesses
下面我們對安全人員最關心的CWE-1337 2021年CWE最危險的25種軟件缺陷做個重點介紹。
2. 2021年最危險的25種軟件缺陷
2021年CWE最危險的25種軟件缺陷,是前兩個日曆年(2019-2020)中遇到的最常見和影響最大的問題指示性的列表。 這些缺陷通常很容易被發現和利用,並且可以讓攻擊者完全接管系統、竊取數據或阻止應用程序運行。 CWE Top 25 可以幫助開發人員、測試人員和用戶,以及項目經理、安全研究人員和教育工作者深入瞭解最嚴重和當前的安全漏洞。
這個數據表的編寫,利用了美國國家標準與技術研究院 (NIST) 的國家漏洞數據庫 (NVD) 中的常見漏洞和披露 (CVE) 數據以及通用漏洞評分系統 (CVSS) 評定的分數與每個CVE記錄相關聯, 根據出現頻率和嚴重程度對每個弱點進行評分。報告對了2019-2020 NVD收錄的32500個CVE漏洞進行了評分和計算,在歸一化後得到了缺陷的排名。排名在算法上考慮到了出現頻率(prevalence)和危害(severity)兩個參數, 確保出現頻率低, 危害小的缺陷, 不容易出現在排行榜中, 而是讓頻率高, 危害高的缺陷出現在排行榜中。
- 具體的算法詳見《話說CWE 4.2的新視圖》
2.1. 2021年CWE最危險的25種軟件缺陷
這次的CWE TOP25是CWE自2019年後,連續第三次發佈TOP25數據。我們可以從每年TOP25的變動中看到攻防雙方在一些重要問題上的爭奪,這樣有助於作爲防守方的我們提前對一些重點高危漏洞進行提前的技術儲備和應急響應措施的準備。
- CWE 2021 TOP25的主要數據
2.2. CWE TOP25 2021 vs 2020
CWE TOP25 2021和2020相比,一些主要的變動較大的數據。
2.2.1. 變動最大的缺陷
- CWE-276 默認權限不正確(Incorrect Default Permissions): 從41到19
- CWE-306 關鍵功能的認證機制缺失(Missing Authentication for Critical Function): 從24到11
- CWE-502 不可信數據反序列化(Deserialization of Untrusted Data): 從21到13
- CWE-862 授權機制缺失(Missing Authorization): 從25到18
- CWE-77 在命令中使用的特殊元素轉義處理不恰當(命令注入)(Improper Neutralization of Special Elements used in a Command (‘Command Injection’)): 從31到25
2.2.2. 下降最快的前5名缺陷
- CWE-200 將敏感信息暴露給未經授權的行爲者(Exposure of Sensitive Information to an Unauthorized Actor): 從7到20
- CWE-119 內存緩衝區邊界內操作的限制不恰當(Improper Restriction of Operations within the Bounds of a Memory Buffer): 從5到17
- CWE-94 對生成代碼的控制不恰當(代碼注入)(Improper Control of Generation of Code (‘Code Injection’)): 從17到28
- CWE-269 特權管理不恰當(Improper Privilege Management): 從22到29
- CWE-732 關鍵資源的權限分配不正確(Incorrect Permission Assignment for Critical Resource): 從16到22
2.2.3. 新進入前25的缺陷
- CWE-276 默認權限不正確(Incorrect Default Permissions): 從41到19
- CWE-918 服務器端請求僞造(SSRF)(Server-Side Request Forgery (SSRF)): 從27到24
- CWE-77 在命令中使用的特殊元素轉義處理不恰當(命令注入)(Improper Neutralization of Special Elements used in a Command (‘Command Injection’)): 從31到25
2.2.4. 跌出前25的缺陷
- CWE-400 未加控制的資源消耗(資源窮盡)(Uncontrolled Resource Consumption): 從23到27
- CWE-94 對生成代碼的控制不恰當(代碼注入)(Improper Control of Generation of Code (‘Code Injection’)): 從17到28
- CWE-269 特權管理不恰當(Improper Privilege Management): 從22到29
3. 結論
- 在今天魔道爭鋒的時代,CWE Top25可以幫助我們進一步的思考魔的攻擊方向和防守的道;
- 緩衝區溢出、輸入校驗、注入類問題仍是業界的主要安全問題,需要持續的關注;
- 對於隱私保護意識的提升,使敏感信息泄露得到一定程度的控制;
- 權限控制是安全攻防爭奪的焦點,除了特權的管理,還要特別關注關鍵功能和默認權限的設置;
- 在信息保存和傳輸中,要注意不可信數據的反序列化問題。
4. 參考