glibc升級小記

2015年元月最後幾天,glibc幽靈漏洞來襲,引用 中華財經網的報道 稍作介紹:html

Linux glibc函數庫日前曝出名爲GHOST(幽靈)的高危漏洞,漏洞編號是CVE-2015-0235。攻擊者可利用此漏洞實施遠程攻擊,並徹底控制目標系統。據360網絡攻防實驗室介紹,各大Linux發行商已經發布漏洞補丁,提醒企業網管作好服務器的安全更新。
Glibc是GNU發佈的libc庫,即c運行庫。它是Linux系統中最底層的API,幾乎其它任何運行庫都會依賴於glibc。glibc除了封裝Linux操做系統所提供的系統服務外,它自己也提供了許多其它一些必要功能服務的實現。
國外安全研究人員發現,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 七、Red Hat Enterprise Linux 6 & 七、 CentOS 6 & 7和Ubuntu 12.04在內的多數知名Linux版本在長達一年半的時間都沒有修補幽靈漏洞。
據360網絡攻防實驗室的安全專家介紹,Linux glibc幽靈漏洞最容易的攻擊入口是郵件服務器,和存在SSRF(Server-side Request Forgery)漏洞的WEB接口。值得慶幸的是,此漏洞目前尚未公開通用的攻擊代碼,這也給了服務器管理員們及時安裝補丁的寶貴時間。
目前Debian 、Red Hat Enterprise Linux、 CentOS和Ubuntu等Linux發行商已發佈了漏洞補丁,用戶只須要根據各發行版的安全公告升級glibc就能夠修補漏洞,避免受到黑客的幽靈攻擊。

 

兩天後,各大牛紛紛推出了本身的bug修復腳本,這裏我借用turnkeylinux的博客作相關業務服務器的更新:linux

1. 測試代碼 ghosttest.c git

/* ghosttest.c: GHOST vulnerability tester */
/* Credit: http://www.openwall.com/lists/oss-security/2015/01/27/9 */
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#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] = '\0';   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); }

 

編譯ghosttest.c生成可執行文件ghosttestshell

#gcc -o ghosttest ghosttest.c安全

2. 升級腳本 update.shbash

#!/bin/bash
update_log="/root/glibc_update.log"
rpm -qa | grep glibc >> $update_log
yum clean all >> $update_log
yum -y update glibc >> $update_log

cd /tmp/
chmod 700 /tmp/ghosttest
./ghosttest >> $update_log
./ghosttest
rm /tmp/ghosttest

/etc/init.d/crond restart >> $update_log
/etc/init.d/rsyslog restart >> $update_log
/etc/init.d/acpid restart >> $update_log
/etc/init.d/sshd restart >> $update_log

 

3. 後續操做就是重啓業務服務,balabala ^_^服務器

後記:網絡

內網一臺服務因爲安裝失誤,致使在磁盤的開始位置寫了兩個引導分區,故而每次重啓機器都引導出錯,報錯信息以下:app

報錯信息解釋一下:系統引導獲取grub.conf指定的img文件,img文件指定的磁盤分區表已經失效,故而每次重啓都因找不到對應的磁盤分區而失敗。ssh

解決方案:用光盤啓動,執行 grub-install --root-directory=/boot /dev/sda

相關文章
相關標籤/搜索