鴻茂傳媒經營理念
始終以創造客戶價值為根本
景安/西部/騰訊雲/阿里雲
提供大廠商的雲伺服器
16年網絡運維經驗
提供專屬人工技術服務
關於該漏洞
安全研究人員近日曝出一個名為幽靈(ghost)的嚴重安全漏洞,這個漏洞可以允許攻擊者遠程獲取作業系統的最高控制權限,影響市面上大量linux作業系統及其發行版。該漏洞cve編號為cve-2015-0235。
什麼是glibc
glibc是gnu發布的libc庫,即c運行庫。glibc是linux系統中最底層的api,幾乎其它任何運行庫都會依賴於glibc。glibc除了封裝linux作業系統所提供的系統服務外,它本身也提供了許多其它一些必要功能服務的實現。glibc囊括了幾乎所有的unix通行的標準。
漏洞概述
代碼審計公司qualys的研究人員在glibc庫中的__nss_hostname_digits_dots()函數中發現了一個緩衝區溢出的漏洞,這個bug可以經過gethostbyname*()函數被本地或者遠程的觸發。
應用程式主要使用gethostbyname*()函數發起dns請求,這個函數會將主機名稱轉換為ip地址。
影響範圍
該漏洞影響glibc庫版本2.2-2.17的linux作業系統
作業系統類型包括
centos 6& 7
debian 7
red hat enterprise linux 6& 7
ubuntu 10.04& 12.04
各linux發行版
漏洞測試
1、將以下代碼文件保存為文件,文件名為ghost.c(注意嚴格區分字母大小寫)。
#include
#include
#include
#include
#include
#include
#define canary" in_the_coal_mine"
struct {
char buffer[1024];
char canary[sizeof(canary)];
} temp = {"buffer", canary};
int main(void) {
struct hostent resbuf;
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;
char name[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);
}
2、執行以下命令,檢測是否存在漏洞
gcc ghost.c -o ghost
./ ghost
修複方案
執行glibc升級命令
rh、fedora、centos系統
yum install glibc&& reboot
debian、ubuntu系統
apt-get clean&& apt-get update&& apt-get upgrade
小貼士:update之後,要重啟依賴glibc的進程。
© 網站版權與免責聲明
1、【鴻茂傳媒】獨立擁有本網站相關網頁內所有資料的版權;
2、未經【鴻茂傳媒】的明確書面許可,任何人不得對其進行複製;
3、本網站未註明【鴻茂傳媒】的文章,均來源於網絡,僅供大家學習與參考;
4、如有侵權/違規/不妥請聯繫客服qq或郵箱刪除,敬請諒解;
5、【鴻茂傳媒】保留隨時更正、修改、更新本聲明的權利。法律申明