內核中的漏洞允許通過目錄操作來提升權限

系統漏洞

最近 Qualys 安全研究人員 (一家云安全、合規和相關服務公司) 發布了漏洞的詳細信息 他們發現了什麼以及什麼 它們會影響 Linux 內核。

CVE-2021-33909 影響內核並允許本地用戶實現代碼執行 並通過操作高度嵌套的目錄來提升權限。

該漏洞是由於缺少對 size_t 轉換為 int 類型的結果的驗證 在對 seq_file 代碼執行操作之前,該代碼從一系列記錄創建文件。 在創建、掛載和刪除具有非常高嵌套級別(路徑大小大於 1GB)的目錄結構時,缺乏驗證可能會導致寫入緩衝區限制之外的區域。

通過在默認配置中利用此漏洞,任何非特權用戶都可以在易受攻擊的主機上獲得 root 權限。

結果,攻擊者可以獲得一個 10 字節的字符串 “// 刪除”,偏移量為“- 2 GB - 10 字節”,指向分配緩衝區之前的區域。

脆弱性的威脅因以下事實而更加複雜: 研究人員能夠準備功能利用 在默認設置下的 Ubuntu 20.04、Debian 11 和 Fedora 34 上。 需要注意的是,其他發行版尚未經過測試,但理論上它們也容易受到該問題的影響並且可能受到攻擊。

成功利用此漏洞允許任何非特權用戶在易受攻擊的主機上獲得 root 權限。 Qualys 安全研究人員已經能夠獨立驗證漏洞、開發漏洞並獲得默認安裝的 Ubuntu 20.04、Ubuntu 20.10、Ubuntu 21.04、Debian 11 和 Fedora 34 Workstation 的完全 root 權限。 其他 Linux 發行版可能容易受到攻擊並且可能被利用。

漏洞利用的工作歸結為創建大約一百萬個目錄的層次結構 通過 mkdir() 調用嵌套 實現大於 1GB 的文件路徑大小。

該目錄被綁定掛載在單獨的用戶命名空間中,之後運行 rmdir() 函數將其刪除。 同時,創建一個線程來加載一個小的 eBPF 程序,該程序在驗證 eBPF 偽代碼之後,但在其 JIT 編譯之前掛起。

在非特權用戶ID命名空間中,打開/proc/self/mountinfo文件,讀取bind-mount掛載的長目錄路徑,導致緩衝區開始前的區域寫入“//deleted”行。 選擇寫入行的位置以覆蓋已測試但尚未編譯的 eBPF 程序中的指令。

此外,在 eBPF 程序級別, 不受控制地寫出緩衝區被轉換為讀/寫能力 通過操作 btf 和 map_push_elem 結構在其他內核結構中進行控制。

然後,漏洞利用將 modprobe_path [] 緩衝區放在內核內存中並覆蓋其中的路徑“/sbin/modprobe”,如果發出 request_module() 調用,則允許任何可執行文件以 root 身份啟動,例如在創建一個 netlink 套接字...

研究人員提供了幾種僅對特定漏洞有效的解決方案,但它們並不能解決問題本身。

因此,建議將參數“/proc/sys/kernel/unprivileged_userns_clone”設置為 0 以禁用在單獨的用戶 ID 命名空間中安裝目錄,將“/proc sys/kernel/unprivileged_bpf_disabled”設置為 1 以禁用 eBPF 程序的加載進入內核。

除此之外,還建議 Linux 發行版的所有用戶更新您的系統以獲得相應的補丁。 問題從2014年XNUMX月開始就很明顯了 它會影響自 3.16 以來的內核版本。 該漏洞補丁與社區協調並於 19 月 XNUMX 日被內核接受。

最後,如果您有興趣了解更多,可以諮詢 以下鏈接中提供了詳細信息。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責資料:AB Internet Networks 2008 SL
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。