Linux Glib漏洞修复经历

前两天收到阿里云邮件,一看又炸眼了!Linux漏洞又来了(看来这Linux也不是铁板一块呀),这次的漏洞是Linux Glibc(幽灵漏洞)
1422630742722
俺家的CentOS看来也得赶紧修复了,这不今天抽出时间赶紧来修复一下。先来看看各家(阿里云和腾讯云)给出的办法,其实都差不多,下面就来说说我自己的修复经历吧。
第一次是用阿里云给出的CentOS修复方法:

yum update glibc

很快就OK了(后来二次证明确实这样就行了),可后来又看到需要先运行清理再升级(这是腾讯云给的办法,阿里云论坛上也有人反应),具体的命令是:

yum clean all; yum update glibc

结果这一操作后,前面的清理倒是顺利,后面的升级就不行了,每次都升级失败,这当中超时占主要部分(天朝呀!),反复重启试了几次都不行,干脆回滚了快照,还是按照先头阿里云给出的办法直接修复,后来不放心,又按阿里云给出的测试脚本:

#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] = '';
  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("notvulnerable");
    exit(EXIT_SUCCESS);
  }
  puts("should nothappen");
  exit(EXIT_FAILURE);
}

将上述代码内容保存为GHOST.c,上传到服务器,直接;

[root@AYxxxxxxxxxxx ~]# ./GHOST
notvulnerable

根据阿里云的说法,测试结果如果是:notvulnerable就说明漏洞修复成功了,反之如果是vulnerable ,则表示存在漏洞,需要进行修复。还有前面忘了说明一下了,当修复好漏洞后,可以使用命令查看

rpm –qa|grep glibc-2.12

具体结果依据你的系统会有所不一样:

OS版本
对应Glibc版本
CentOS6.x/redhat6.x
glibc-2.12-1.149.el6_6.5
OS版本: CentOS 6.2 安全版(tlinux)
glibc-2.12-1.149.tl1.5
CentOS5.x/redhat5.x
glibc-2.5-123.el5_11.1
 
OS: Ubuntu 更新方法如下:【针对Ubuntu,腾讯云软件仓库已完成同步】
1)用户使用root权限登录系统或使用sudo获取root权限,执行以下命令:#apt-get update#apt-get install libc6
2)执行完成以后,查看版本, 输出如下表示更新完成:root@VM-ubuntu:~# dpkg -l|grep libc6
OS版本
对应Glibc版本
Ubuntu12.x
2.15-0ubuntu10.10
Ubuntu14.x
2.19-0ubuntu6
Ubuntu10.x
2.11.1-0ubuntu7.20

至此,俺家的CentOS应该穿上防护衣了,又可以继续的得瑟了,呵呵!
 
 


说点什么?