Linuxglibc幽靈漏洞測試與修復方法
Linuxglibc幽靈漏洞測試與修復方法
simeon
一、Linux glibc幽靈漏洞簡介
2015年1月28日網際網路上爆出Linux glibc幽靈漏洞(glibc gethostbyname buffer overflow,http://seclists.org/oss-sec/2015/q1/274),也有人將其稱之為“20150127GHOST gethostbyname() heap overflow in glibc”,在CVE上的漏洞編號是CVE-2015-0235。攻擊者可利用此漏洞實施遠端攻擊,並完全控制目標系統。
glibc是GNU釋出的libc庫,即c執行庫。glibc是linux系統中最底層的api,幾乎其它任何執行庫都會依賴於glibc。glibc除了封裝linux作業系統所提供的系統服務外,它本身也提供了許多其它一些必要功能服務的實現。glibc 囊括了幾乎所有的 UNIX 通行的標準。
國外安全研究人員發現,glibc的__nss_hostname_digits_dots()函式有緩衝區溢位漏洞。這一漏洞既可以本地利用,也可以遠端利用。研究人員對漏洞進行了測試驗證:向目標郵件伺服器傳送特別構造的郵件,從而獲得了遠端登入Linxu系統的shell指令碼。通過這種方式可以繞過32位和64位系統上的所有現存保護機制(比如SSLR、PIE和NX)。
受glibc-2.2影響的GNU C函式最早版本是在2000年11月釋出的。這一漏洞曾在2013年5月被修補(在glibc-2.17和glibc-2.18版本之間)。但由於當時並沒有被認定為安全威脅,包括Debian 7、Red Hat Enterprise Linux 6 & 7、 CentOS 5&6& 7和Ubuntu 12.04在內的多數知名Linux版本在長達一年半的時間都沒有修補幽靈漏洞,經測試以下版本均存在漏洞:
-
RHEL (Red Hat Enterprise Linux) version 5.x, 6.x, 7.x
-
CentOS Linux 5.x, 6.x & 7.x
-
Ubuntu Linux version 10.04, 12.04 LTS
-
Debian Linux version 7.x
-
Linux Mint version 13.0
-
Fedora Linux version 19 y anteriores
-
SUSE Linux Enterprise 11 y anteriores
-
Arch Linux glibc version <= 2.18-1
據360安全公司研究人員分析Linuxglibc幽靈漏洞最容易的攻擊入口是郵件伺服器,和存在SSRF(Server-side Request Forgery)漏洞的WEB介面。值得慶幸的是,此漏洞目前還沒有公開通用的攻擊程式碼,這也給了伺服器管理員們及時安裝補丁的寶貴時間。
二、Linux glibc幽靈漏洞測試方法
1. Ubuntu & Debian檢查
ldd –version
(1)Ubuntu受影響版本(https://launchpad.net/ubuntu/+source/eglibc):
Ubuntu 12.04 LTS: 2.15-0ubuntu10.10
Ubuntu 10.04 LTS: 2.11.1-0ubuntu7.20
(2)Debian gibc受影響版本(https://security-tracker.debian.org/tracker/CVE-2015-0235),Debian 7LTS: 2.13-38+deb7u7等
eglibc (PTS) squeeze 2.11.3-4 vulnerable
eglibc wheezy 2.13-38+deb7u6 vulnerable
Debian gibc已經修復版本:
squeeze (lts) 2.11.3-4+deb6u4
wheezy (security) 2.13-38+deb7u7
2. CentOS & RHEL檢查
在centos上執行“rpm -qglibc”命令,如圖1所示,顯示glibc的版本資訊為glibc-2.5-118.el5_10.2。
受影響版本:
CentOS 5:glibc-2.5-118.el5_10.2
CentOS 6: glibc-2.12-1.149.el6_6.5
CentOS 7: glibc-2.17-55.el7_0.5
RHEL 5: glibc-2.5-123.el5_11.1
RHEL 6: glibc-2.12-1.149.el6_6.5
RHEL 7: glibc-2.17-55.el7_0.5
檢視RHEL 各個版本更多有關該漏洞的資訊請訪問:
https://security-tracker.debian.org/tracker/CVE-2015-0235
3.POC驗證測試
把下面的程式碼儲存為ghost.c,或者wget http://www.antian365.com/lab/linux0day/ghost.c
/*
* GHOSTvulnerability check
* http://www.antian365.com/lab/linux0day/ghost.c
* Usage: gcc ghost.c-o ghost && ./ ghost
*/
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#define CANARY “in_the_coal_mine”
struct {
charbuffer[1024];
charcanary[sizeof(CANARY)];
} temp = { “buffer”, CANARY };
int main(void) {
struct hostentresbuf;
struct hostent*result;
int herrno;
int retval;
/*** strlen(name) = size_needed – sizeof (*host_addr) – sizeof (*h_addr_ptrs) – 1; ***/
size_t len =sizeof(temp.buffer) – 16*sizeof(unsigned char) – 2*sizeof(char *) – 1;
charname[sizeof(temp.buffer)];
memset(name,`0`, len);
name[len] =` `;
retval =gethostbyname_r(name, &resbuf, temp.buffer, sizeof(temp.buffer),&result, &herrno);
if(strcmp(temp.canary, CANARY) != 0) {
puts(“vulnerable”);
exit(EXIT_SUCCESS);
}
if (retval ==ERANGE) {
puts(“not vulnerable”);
exit(EXIT_SUCCESS);
}
puts(“should not happen”);
exit(EXIT_FAILURE);
}
直接編譯並執行: gcc ghost.c-o ghost && ./ghost 如果存在漏洞則會顯示“vulnerable”,如圖2所示。
也可以執行下面的命令,以檢測是否存在漏洞
方法一:
rpm -qglibc
cat/etc/issue
wget http://www.antian365.com/lab/linux0day/ghost.c
gcc ghost.c-o ghost && ./ghost
方法二直接顯示glibc的版本資訊:
wget -OGHOST-test.sh http://www.antian365.com/lab/linux0day/GHOST-test.sh.txt
bashGHOST-test.sh
顯示結果如下:
Vulnerableglibc version <= 2.17-54
Vulnerableglibc version <= 2.5-122
Vulnerableglibc version <= 2.12-1.148
Detectedglibc version 2.5 revision 118
Thissystem is vulnerable to CVE-2015-0235.<https://access.redhat.com/security/cve/CVE-2015-0235>
Pleaserefer to <https://access.redhat.com/articles/1332213> for remediationsteps
三、修復方法:
1. Ubuntu/Debian
在Ubuntu/Debian上執行以下命令進行修復,修復後需要重啟。
apt-get update && apt-get -y install libc6
2.Centos
在Centos上執行“yumupdate glibc”後會有一個確認,輸入“y”,大概會下載6個安裝包,安裝完成後需要重啟計算機。
參考資料
1.360安全播報 http://bobao.360.cn/news/detail/1166.html
2. 國家漏洞庫:http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-0235
3. http://seclists.org/oss-sec/2015/q1/274
4. https://www.digitalocean.com/community/tutorials/how-to-protect-your-linux-server
-against-the-ghost-vulnerability
相關文章
- Linux glibc 幽靈漏洞修復方案Linux
- 英特爾釋出新微程式碼 有望修復部分晶片“ 幽靈 ”漏洞晶片
- 網站漏洞測試 檔案上傳漏洞的安全滲透與修復網站
- 滲透測試公司 對於越權漏洞的檢測與修復
- 網站漏洞測試php程式碼修復詳情網站PHP
- 如何對網站登入進行漏洞測試以及漏洞修復網站
- 網站漏洞檢測對漏洞檢測修復方案網站
- 網站程式碼漏洞審計挖掘與修復方法網站
- 網站滲透測試服務之簡訊轟炸漏洞挖掘與修復網站
- thinkcmf 網站最新漏洞修復方法網站
- 程式碼注入漏洞以及修復方法
- 網站漏洞檢測 wordpress sql注入漏洞程式碼審計與修復網站SQL
- struts2架構網站漏洞修復詳情與利用漏洞修復方案架構網站
- 框架網站漏洞修復防護方法框架網站
- 幽靈詭計:遊戲敘事的意義、方法與技巧遊戲
- Weblogic WLS元件REC漏洞(CVE-2017-10271)測試與修復方案Web元件
- PrestaShop網站漏洞修復如何修復REST網站
- 滲透測試對網站漏洞修復執行命令重點檢查網站
- 網站漏洞修復 上傳webshell漏洞修補網站Webshell
- 區塊鏈app安全防護 滲透測試中發現的越權漏洞分析與修復區塊鏈APP
- 怎麼修復網站漏洞騎士cms的漏洞修復方案網站
- 修復SQL隱碼攻擊漏洞 兩種方法SQL
- [資訊](1.11)macOS又爆嚴重漏洞;“幽靈超距作用”測試獲突破,量子通訊安全問題有望解決Mac
- 詳解ShellShock 漏洞復現原理,內附ShellShock的修復方法
- 定心丸!ZipperDown漏洞分析與修復建議
- phpStudy poc漏洞復現以及漏洞修復辦法PHP
- 如何解決分散式系統中的“幽靈復現”?分散式
- DVWA中學習PHP常見漏洞及修復方法PHP
- CSRF漏洞復現及測試工具講解
- PHP DIY 系列------框架篇:6. 簡單測試與 bug 修復PHP框架
- 幽靈選單介紹;
- Shellshock漏洞回顧與分析測試
- 圖靈測試已OUT,這才是測試AI的更佳方法圖靈AI
- 如何修復AppScan漏洞APP
- Oracle_UNDO壞塊測試和修復(BBED)Oracle
- TomcatAJP檔案包含漏洞及線上修復漏洞Tomcat
- metinfo sql注入漏洞修復建議與防範辦法SQL
- semcms網站漏洞挖掘過程與安全修復防範網站