幽靈漏洞是Linux glibc庫上出現的一個嚴重的安全問題,他可以讓攻擊者在不瞭解系統的任何情況下遠程擷取作業系統的控制許可權。目前他的CVE編號為CVE-2015-0235。
受影響作業系統版本
CentOS 6 、7
Debian 7
Red Hat Enterprise Linux 6 、 7
Ubuntu 10.04 、12.04
等眾多使用glibc庫2.2-2.17版本的Linux發行版本
什麼是glibc
glibc是GNU發布的libc庫,即c運行庫。glibc是linux系統中最底層的api,幾乎其它任何運行庫都會依賴於glibc。glibc除了封裝linux作業系統所提供的系統服務外,它本身也提供了許多其它一些必要功能服務的實現。glibc 囊括了幾乎所有的 UNIX 通行的標準。
出現了什麼漏洞
代碼審計公司Qualys的研究人員在glibc庫中的__nss_hostname_digits_dots()函數中發現了一個緩衝區溢位的漏洞,這個bug可以經過 gethostbyname*()函數被本地或者遠端觸發。應用程式主要使用gethostbyname*()函數發起DNS請求,這個函數會將主機名稱轉換為ip地址。
漏洞危害
這個漏洞造成了遠程代碼執行,攻擊者可以利用此漏洞擷取系統的完全控制權。
漏洞證明
在我們的測試中,我們編寫了一個POC,當我們發送一封精心構造的電子郵件給伺服器後,我們便可以獲得遠程Linux伺服器的shell,這繞過了目前在32位和64位系統的所有保護(如ASLR,PIE和NX)。
我們能做什嗎?
給作業系統及時打補丁,我們(Qualys)已與Linux發行商緊密合作,會及時發布補丁。
為什麼叫做GHOST?
因為他通過GetHOST函數觸發。
哪些版本和作業系統受影響?
第一個受影響的版本是GNU C庫的glibc-2.2,2000年11月10號發布。我們已找出多種可以減輕漏洞的方式。我們發現他在2013年5月21號(在glibc-2.17和glibc-2.18發布之間)已經修複。不幸的是他們不認為這是個安全性漏洞。從而導致許多穩定版本和長期版本暴露在外,其中包括Debian 7 (wheezy),Red Hat Enterprise,Linux 5 & 6 & 7,CentOS 5 & 6 & 7,Ubuntu 12.04等。
修複方案
升級glibc庫:
RHEL/CentOS : sudo yum update glibc
Ubuntu : sudo apt-get update ; sudo apt-get install libc6
漏洞測試方法:
下載:
wget https://webshare.uchicago.edu/orgs/ITServices/itsec/Downloads/GHOST.c
編譯:
gcc -o GHOST GHOST.c
執行:
./GHOST
如果輸出:
[root@localhost home]# ./GHOST
not vulnerable
表示漏洞已經修複,如果僅輸出“vulnerable”字樣,表示漏洞依然存在。
指令碼測試漏洞
wget -O GHOST-test.sh http://www.cyberciti.biz/files/scripts/GHOST-test.sh.txt
bash GHOST-test.sh
[root@localhost ~]# bash GHOST-test.sh
Vulnerable glibc version <= 2.17-54
Vulnerable glibc version <= 2.5-122
Vulnerable glibc version <= 2.12-1.148
Detected glibc version 2.12 revision 149
Not Vulnerable.