參考http://www.linuxidc.com/Linux/2015-04/116472.htm via 紅孩兒你好
一、簡介
glibc是gnu發布的libc庫,即c運行庫。glibc是linux系統中最底層的api,幾乎其它任何運行庫都會依賴於glibc。glibc除了封裝linux操作系統所提供的系統服務外,它本身也提供了許多其它一些必要功能服務的實現。
同時,錯誤地升級glibc將會毀掉一個系統(以至於無法登錄)。初學Linux時,通過網上其他教程裝毀的Linux不下十台,這里找到一個靠譜的,通過升級glibc到2.15版得出的升級方法。
二、過程
1、下載glibc,解壓
原文中的glibc-ports是用來支持arm架構芯片的包,可以將包內文件移動到glibc-2.15/ports內編譯安裝,這里不再贅述
wget http://ftp.gnu.org/gnu/glibc/glibc-2.15.tar.gz
tar -zxvf glibc-2.15.tar.gz
2、准備一個編譯文件夾
mkdir glibc-2.15-build cd glibc-2.15-build
3、配置configure
../glibc-2.15/configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin
4、編譯安裝
make
make install
順便說一下,make的-j參數是個坑,雖然可以並行編譯,但如果Makefile或依賴關系有問題,編譯會出錯。
5、檢查軟連接
編譯成功后,glibc-2.15-build文件下會生成一個新的libc.so.6,這是一個軟連接,而真實的lib文件是此目錄下的libc.so。ll是ls -l的別名
ll libc.so.6
查看庫文件
ll /lib64/libc*
可以看到2.12的舊庫文件還在,多了2.15版本的庫文件,而且軟鏈接文件全部指向了2.15版本
查看glibc支持的版本
strings libc.so | grep GLIBC
6、漏洞影響
Google的安全研究團隊近日披露了一個關於glibc中getaddrinfo函數的溢出漏洞。漏洞成因在於DNS Server Response返回過量的(2048)字節,會導致接下來的response觸發棧溢出。(CVE-2015-7547)。
攻擊者可借助特制的域名、DNS服務器或中間人攻擊利用該漏洞,控制軟件,並試圖控制整個系統。
對於Debian系列、Red Hat系列的Linux發行版,只要glibc版本大於2.9就會受到影響。
地址:https://sourceware.org/bugzilla/show_bug.cgi?id=18665
官方的補救策略也很惡心:https://sourceware.org/ml/libc-alpha/2016-02/msg00416.html
個人的解決辦法:使用安全靠譜的“大廠”的DNS服務器