漏洞修补

昨天收到了阿里云的邮件和短信,据说是Linux GNU glibc标准库的gethostbyname函数爆出缓冲区溢出漏洞,漏洞编号为CVE-2015-0235。黑客可以通过gethostbyname系列函数实现远程代码执行,获取服务器的控制权及Shell权限。

目前已知是Glibc 2.2到2.17版本都会有这个问题,看了下我选择的阿里云镜像,按照阿里云官方给出的检测方法,测试后貌似已经被修补了,其实我自己都想通过这个漏洞来查看主机上面的其它镜像内容,可惜不是技术宅。最近的Linux系统漏洞被公布的也不在少数,应该是使用的人数越来越多了,难怪微软都要直接发布Win10来挽回人气了。
检测方法:
请自行检测:
[[test]]
$ cat > GHOST.c << EOF #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("notvulnerable");
exit(EXIT_SUCCESS);
}
puts("should nothappen");
exit(EXIT_FAILURE);
}
EOF
[test]
$ gcc GHOST.c -o GHOST
[test]
$./GHOST
vulnerable

修补方式有多种,看自己选择的镜像内容而定,基础组件的修补也许会造成不同后果,备份数据和快照最重要。
必须先执行 yum clean all,再执行 yum update glibc
yum clean all
因为要先清除旧的缓存,否则你装的还是旧的版本。如果要查版本号执行 rpm -qa|grep glibc-2.12
更新后版本号是不变的,glibc-2.12-1.149,后边是149就表示是最新的了,不会显示2.19。