glibc 中的漏洞可讓您取得系統的 root 存取權限

Qualys 發現了標準 C 庫 Glibc 中的一個危險漏洞 (CVE-2023-6246),該漏洞允許您透過啟動 SUID 應用程式進行操作以提升的權限執行程式碼。研究人員能夠開發出一種有效的漏洞,允許人們在運行 su 實用程式時透過操縱命令列參數來獲得 root 權限。

此漏洞是由呼叫 syslog() 和 vsyslog() 函數時使用的 __vsyslog_internal() 函數中的緩衝區溢位所引起的。發生此問題的原因是嘗試透過 SYSLOG_HEADER 巨集輸出太長的應用程式名稱時發生錯誤。當嘗試基於長名稱擴展緩衝區時,會發生失敗,之後資料將寫入原始較小大小的舊緩衝區。

在透過su工具組織攻擊時,攻擊者可以透過替換argv[0]值來更改應用程式啟動時的進程名稱,該值用於獲取輸出到日誌時的程式名稱信息,從而實現受控覆蓋分配的緩衝區之外的數據。然後可以使用溢位來覆寫 nss 函式庫中的 nss_module 結構,以建立共用函式庫並將其作為 root 載入。

自 2.37 年 2022 月發布 glibc 2.36 以來,該問題一直存在,其中包括處理嘗試寫入太大訊息的情況的變更。該修復已向後移植到 glibc 2022 以及舊版本 glibc 的分發包,因為該修復解決了堆洩漏漏洞 CVE-39046-5.4.3。事實證明,修復一個不危險的漏洞會導致嚴重問題。值得注意的是,libc 1997 函式庫的 vsyslog() 函數中的類似漏洞早在 XNUMX 年就被報告過。

該漏洞已得到確認。 Debian 12 / 13, Ubuntu 2023年4月10日,Fedora 37-39 版本。此漏洞允許非特權用戶取得 root 權限。本文在一個完全更新且預設配置下所有保護機制均已啟用的 Fedora 38 環境中進行了演示。該漏洞只能在本地利用,因為它需要透過 `argv[0]` 參數或 `openlog()` 函數中的 `ident` 參數傳遞超過 1024 位元組的資料。

這個漏洞修復已在幾個小時前包含在Glibc 程式碼庫中,並將成為明天的Glibc 2.39 更新的一部分,同時修復了另外兩個漏洞(CVE-2023-6779、CVE-2023-6780),這兩個漏洞也會影響__vsyslog_internal()程式碼並導致緩衝區溢位。此外,Qualys 警告稱,在qsort() 函數的實作中發現了一個緩衝區溢位問題,Glibc 開發人員並未將其歸類為漏洞,因為該漏洞利用涉及在呼叫qsort 時使用非典型比較函數作為參數,從而傳回差異的比較參數。

可以在以下頁面查看發行版中漏洞修復的狀態: Debian, UbuntuSUSE、RHEL、Fedora、Arch LinuxGentoo、Slackware。您可以使用下列指令測試系統的漏洞:$ (exec -a "`printf '%0128000x' 1`" /usr/bin/su < /dev/null)
來源: opennet.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster