Linux 核心 VFS 中存在著可讓您提升權限的漏洞

Linux 核心提供的檔案系統上下文 API 中發現了一個漏洞 (CVE-2022-0185),該漏洞允許本機使用者獲得系統的 root 權限。 發現問題的研究人員發布了一個漏洞利用演示,該漏洞允許您在預設配置的 Ubuntu 20.04 上以 root 身分執行程式碼。 漏洞代碼計劃在發行版發布修復漏洞的更新後一周內發佈在 GitHub 上。

此漏洞存在於VFS中的legacy_parse_param()函數中,是由於未能正確檢查不支援檔案系統上下文API的檔案系統上提供的參數的最大大小而引起的。 傳遞太大的參數可能會導致用於計算要寫入的資料大小的整型變數溢出——程式碼中有一個緩衝區溢位檢查“if (len > PAGE_SIZE - 2 - size)”,這並沒有如果大小值大於4094,則有效。對於整數溢位下限(整數下溢,將4096 - 2 - 4095 轉換為unsigned int 時,結果為2147483648)。

當存取專門設計的檔案系統映像時,此錯誤會導致緩衝區溢出並覆蓋分配的記憶體區域之後的核心資料。 若要利用漏洞,您必須具有 CAP_SYS_ADMIN 權限,即管理員權力。 問題是,如果系統啟用了對使用者命名空間的支持,非特權使用者可以在隔離的容器中獲得此類權限。 例如,使用者命名空間在 Ubuntu 和 Fedora 上預設為啟用,但在 Debian 和 RHEL 上未啟用(除非使用容器隔離平台)。

這個問題從 Linux 核心 5.1 開始出現,並在昨天的更新 5.16.2、5.15.16、5.10.93、5.4.173 中修復。 修復該漏洞的軟體包更新已經針對 RHEL、Debian、Fedora 和 Ubuntu 發布。 該修復尚未在 Arch Linux、Gentoo、SUSE 和 openSUSE 上可用。 作為不使用容器隔離的系統的安全解決方法,您可以將 sysctl "user.max_user_namespaces" 值設為 0: echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf # sysctl -p / etc/sysctl.d/userns.conf

來源: opennet.ru

添加評論