Linux Glib漏洞修复经历
前两天收到阿里云邮件,一看又炸眼了!Linux漏洞又来了(看来这Linux也不是铁板一块呀),这次的漏洞是Linux Glibc(幽灵漏洞)
俺家的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应该穿上防护衣了,又可以继续的得瑟了,呵呵!