摘要:我們來看下新版的《2022年危害最大的25種安全問題》在安全預防上會給了我們哪些安全提示。
本文分享自華為雲社群《CWE4.8 -- 2022年危害最大的25種軟體安全問題》,作者: Uncle_Tom 。
1. CWE 4.8的變化
2022年過了一半了,繼《CWE 4.7中的新視圖 – 工業控制系統的安全漏洞類别》釋出還不到2個月, 6月底又出了一個版本 – CWE4.8。做為軟體安全研究的重要标準,我們來看下這個版本有那些變化。
從彙總表可以看出:
- 新增1個弱點:Weakness-Base CWE-1386:Windows 連接配接點/挂載點上的不安全操作(Insecure Operation on Windows Junction / Mount Point);
- 新增1個分類:CWE CATEGORY: CWE-1388:實體通路問題(Physical Access Issues and Concerns)
- 新增1個視圖:View CWE-1387:CWE Top 25 (2022)(Weaknesses in the 2022 CWE Top 25 Most Dangerous Software Weaknesses)。
下面我們來的看下具體弱點的變動。
1.1 CWE-1386:Windows 連接配接點/挂載點上的不安全操作
這是個新增的Windows的問題,具體位置如下圖:
這個新弱點被劃分在CWE-664(在生命周期中對資源的控制不恰當)下CWE-706(使用不正确的解析名稱或索引), 以及CWE-59(在檔案通路前對連結解析不恰當(連結跟随))下的一個子弱點。
在 Windows 中,NTFS5 允許檔案系統可以對對象生成重解析點(reparse points)。
- 連接配接點: 應用程式可以建立從一個目錄到另一個目錄的硬連結,稱為連接配接點。
- 挂載點: 建立從目錄到驅動器号的映射,稱為挂載點。
Windows檔案或者目錄可以包含一個重解析點,它是一個使用者自定義資料的集合。儲存它們的程式和解析處理這些資料檔案的系統過濾器能識别這些資料的格式。 當一個應用程式設定了一個重解析點,它在儲存資料時将添加一個唯一的重解析标簽用于标示所存儲的資料。當一個檔案系統打開一個帶重解析點的檔案時,首先嘗試尋找由重解析點所辨別檔案格式關聯的檔案系統過濾器,如果找到檔案系統過濾器,過濾器處理重解析點資料所訓示的檔案。如果沒有找到過濾器,那麼打開檔案的操作失敗。
CWE-1386是由于windows打開一個檔案或目錄時,如果該檔案或目錄關聯到一個目标控制範圍之外的連接配接點或挂載點,則可能允許攻擊者使軟體讀取、寫入、删除或以其他方式對未經授權的檔案進行操作。
如果一個檔案被特權程式使用,它可以被一個敏感檔案的硬連結替換(例如,AUTOEXEC.BAT),那麼攻擊者可以提升特權。當程序打開檔案時,攻擊者可以冒用該程序的特權,誘騙特權程序讀取、修改或删除敏感檔案,阻止程式準确處理資料,操作也可以指向系統資料庫和信号量。
例如:CVE-2021-26426,特權服務允許攻擊者使用目錄連接配接删除未經授權的檔案,進而導緻以 SYSTEM 身份執行任意代碼。
1.2. CWE-1388:實體通路問題
這是個硬體設計上新增的硬體分類,具體如下圖。
老樣子,硬體問題不是我的專長,不做過多的解讀。
2. CWE-1387:CWE Top 25 (2022)
距離2021年的《CWE釋出2021年最危險的25種軟體缺陷》差不多剛好一年。歲月如梭,光陰似箭,好快!又是一年荷花盛。
今年的排行榜
這個排名是CWE的團隊,依據美國國家标準與技術研究院 (National Institute of Standards and Technology(NIST))的 國家漏洞庫(National Vulnerability Database(NVD)) 記錄的披露漏洞(Common Vulnerabilities and Exposures(CVE)), 以及網絡安全和基礎設施安全局 (Cybersecurity and Infrastructure Security Agency(CISA))的已知披露漏洞目錄(Known Exploited Vulnerabilities (KEV)), 通過通用缺陷評分系統(Common Vulnerability Scoring System (CVSS))對每個缺陷進行評分。排名統計了2020 到2021年的37,899 個CVE,每個CVE根據問題的發生率和嚴重程度的一個公式計算得分,最終得到問題的排名。
具體算法可參考 《話說CWE 4.2的新視圖》。
2.1. 排名變動情況
具體變動如下圖:
- 上升最快的名單:
- CWE-362:使用共享資源的并發執行不恰當同步問題(競争條件): 從 33 上升到 22;
- CWE-94:對生成代碼的控制不恰當(代碼注入): 從 28 上升到 25;
- CWE-400:未加控制的資源消耗(資源窮盡): 從 27 上升到 23;
- CWE-77:在指令中使用的特殊元素轉義處理不恰當(指令注入)): 從25 上升到 17;
- CWE-476:空指針解引用: 從 15 上升到 11。
- 下降最快的名單:
- CWE-306:關鍵功能的認證機制缺失: 從 11 下降到 18;
- CWE-200:資訊洩露: 從 20 下降到 33;
- CWE-522:不充分的憑證保護機制: 從 21 下降到 38;
- CWE-732:關鍵資源的不正确權限授予: 從 22 下降到 30。
- 新進前25的有:
- CWE-362:使用共享資源的并發執行不恰當同步問題(競争條件): 從 33 上升到 22;
- CWE-94:對生成代碼的控制不恰當(代碼注入): 從 28 上升到 25;
- CWE-400:未加控制的資源消耗(資源窮盡): 從 27 上升到 23;
- 跌出前25的有:
- CWE-200:資訊洩露: 從 20 下降到 33;
- CWE-522:不充分的憑證保護機制: 從 21 下降到 38;
- CWE-732:關鍵資源的不正确權限授予: 從 22 下降到 30。
2.2. TOP 25的記分明細
2.3. 排名統計的改進
為了更好的讓人們明白每一個缺陷的特性,在缺陷的映射上,盡量映射到更細力度的缺陷枚舉類型上,比如base、Variant、Compound,這樣有利于從更細粒度上解決問題。是以TOP 25中的CWE的類型正逐漸從支柱(pillar)、類(Class) 向更細力度的缺陷枚舉類型base、Variant、Compound上過度。
比如:
- Class/Pillar 從2020年的36%,降到現在的28%;
- Class 從2019年的43%,降到現在的16%;
- Base/Var/Comp 從2019年的 57%上升到84%;
- 對應到base類型的問題,從2019年的 50% 提升到現在的 76%。
注:CWE的枚舉類型詳見:《話說CWE 4.2的新視圖》。
3. 結論
- 前十位的缺陷變動不大,主要還是記憶體讀寫造成的緩沖區溢出,以及外部輸入校驗所帶來的各種注入問題;
- 記憶體安全問題是C語言指針的靈活性給我們帶來的後遺症,也一直是困擾我們的主要安全問題。現在安全性已經成為軟體開發的重要需求。新興的Rust語言是否能夠給在記憶體管理方面帶來較大的改善,還需要時間的證明;或者在記憶體安全和程式設計靈活性的平衡上,尋找一種更容易被廣大開發者接受的新語言;
- 外部輸入引發的各種注入類問題,在今後相當長的一段時間會長期伴随者我們。零信任、供應鍊安全架構的提出,雖然在安全概念和設計指導上達到了一個新的高度,但在軟體應用落地時,還取決于廣大的開發人員對安全意識的逐漸提高,進而在代碼中有效的執行各種對外部輸入的有效的檢測,以及各種憑證的有效驗證。當然憑證的校驗可以通過使用安全子產品來進一步降低開發中的安全風險;
- 在TOP 25的資料統計上,CWE在盡量将各種軟體問題歸結到更細力度的問題分類上。通過這些年新版本的快速釋出,已經增加了相當多的細分類型(Base/Variant/Compound)。 從2017年3.0的714個增加到了現在4.8版本的927個,增加了将近30%。這也說明我們對問題的認知程度在細化和加深,這更加有利于我們在安全防範中,采取更精細的檢查和更具針對性的防範措施,進而降低安全防禦的成本。
4. 參考
- Differences between Version 4.7 and Version 4.8
- 2022 CWE Top 25 Most Dangerous Software Weaknesses
點選關注,第一時間了解華為雲新鮮技術~