Glibc 動態加載器存在嚴重本地提權漏洞
近日有關 Glibc 動態加載器 (Dynamic Loader) 的一個嚴重漏洞被公開,攻擊者獲取本地用戶 (local users) 身份后,利用該漏洞制造緩沖區溢出,即可獲得完整 root 權限。
據介紹,攻擊者使用由 ld.so 動態加載器制作的 GLIBC_TUNABLES 環境變量來觸發漏洞,然后通過 SUID 權限安裝文件時,能以 root 權限執行任意代碼。
Glibc 即 GNU C Library,是 GNU 系統以及大多數采用 Linux 內核的系統中的 C 運行庫。Glibc 是 Linux 系統中最底層的 API,幾乎其它任何運行庫都會依賴于 Glibc。
它定義了典型程序所需的系統調用和其他基本功能,例如 open、malloc、printf、exit 等。 Glibc 的動態加載器是 glibc 的重要組成部分,負責準備和運行程序。當程序啟動時,該加載器首先檢查該程序以確定其所需的共享庫。然后它搜索這些庫,將它們加載到內存中,并在運行時將它們與可執行文件鏈接。
在此過程中,動態加載器解析符號引用,例如函數和變量引用,確保為程序的執行做好一切準備。鑒于其作用,動態加載器對安全性高度敏感,因為當本地用戶啟動 set-user-ID 或 set-group-ID 程序時,其代碼會提權來運行。
該漏洞最早由 Qualys 報告,被命名為 Looney Tunables,追蹤編號為 CVE-2023-4911。據稱過去兩年發布的 Linux 發行版均受存在 Looney Tunables 漏洞 ,例如 Ubuntu 22.04 LTS、23.04、Fedora 38 以及其他容易受到此本地提權漏洞影響的發行版。
漏洞曝光后,獨立安全研究員 Peter Geissler (blasty) 很快就發布了 PoC 代碼,確認可以攻擊 Linux 發行版。
上文提到的 GLIBC_TUNABLES 環境變量旨在微調和優化與 glibc 相關的應用程序,是開發者和系統管理員的必備工具。它的濫用會廣泛影響系統性能、可靠性和安全性。