glibc 漏洞威脅數百萬 Linux 系統安全 可導致任意代碼執行
GNU C庫(glibc)作為絕大多數Linux應用程序的基礎組件,其共享庫加載機制中新發現的漏洞可能影響靜態setuid二進制文件的安全性。該漏洞編號為CVE-2025-4802,源于靜態setuid二進制文件通過dlopen()進行動態庫調用時,錯誤處理了LD_LIBRARY_PATH環境變量。
漏洞技術原理
glibc是GNU項目及所有主流Linux發行版使用的標準C庫,作為操作系統內核與用戶空間程序之間的橋梁,負責處理輸入/輸出、內存分配和網絡通信等基礎功能。雖然glibc主要服務于動態鏈接二進制文件,但也支持靜態鏈接可執行文件——這類程序在編譯時已包含所有必要庫文件。
漏洞本質在于靜態setuid二進制文件與動態加載器的交互異常。安全公告指出:"當靜態鏈接的setuid二進制文件調用dlopen(包括setlocale后的內部dlopen調用或getaddrinfo等NSS函數調用)時,可能錯誤地搜索LD_LIBRARY_PATH來確定加載哪個庫,導致執行攻擊者控制的庫代碼。"
漏洞利用條件
該漏洞被歸類為本地條件性風險,需要同時滿足以下條件:
- 系統中存在靜態鏈接的setuid二進制文件
- 該二進制文件需調用dlopen()——無論是直接調用還是通過libc/NSS間接調用
- 當前環境允許用戶設置LD_LIBRARY_PATH
公告特別說明:"截至本公告發布時尚未發現此類程序,但不能排除存在自定義setuid程序的可能性——盡管從安全實踐角度強烈不建議使用這類程序。"這使得該漏洞成為低概率但高影響的威脅,特別是在使用遺留或自定義靜態二進制文件的環境中。
修復建議
系統管理員和Linux發行版維護者應當:
- 將glibc升級至2.39版本,若維護自定義構建則需手動應用補丁
- 審計靜態setuid二進制文件,盡可能移除或改用動態鏈接重新編譯