Google 的安全研究团队近日披露了glibc getaddrinfo 溢出漏洞。

漏洞的详细发现过程可以参见Google的博客 。(题外话,Google 的工程师都真牛)

漏洞描述:

漏洞成因在于DNS Server Response返回过量的(2048 ) 字节, 导致接下来的response 触发栈溢出。

The vulnerability relies on an oversized (2048  bytes) UDP or TCP response, which is followed by another response that will overwrite the stack.

影响范围:

所有Debian 系列、Red Hat 系列的Linux 发行版,只要glibc 版本大于2.9 就会受到影响。

目前Google 已提供了POC,据Google 博客中所述,该漏洞应该是可以绕过内存防护技术,从而形成代码执行漏洞。

4a56dcbfb20437d34c1c905105f82b4a

POC 使用测试

POC 地址:github.com/fjserna/CVE-2015-7547

我在自己的本地 lubuntu 上进行测试,libc 版本为 2.19。lubuntu系列也属于Debian 的一个发行版,故理论上满足漏洞条件。

测试过程如下:

根据漏洞描述,我们可以做一个假的DNS Server 作为中间人,来验证该漏洞。

  1. 更改DNS 解析为 127.0.0.1,刷新DNS 缓存 sudo /etc/init.d/nscd restart
  2. 执行 CVE-2015-7547-poc.py , 注意无需更改 ip_addr 。
  3.  编译 CVE-2015-7547-client.c , 执行CVE-2015-7547-client

若含有漏洞,会造成Segmentation Fault。

b1f6e45de23f77455d11b448080bbdcc

由于gilbc 2.9 是在2008年发行的,所以大量Linux 系统都会受到该漏洞影响。若一旦绕过内存防护技术,则该漏洞可以成为一大杀器。被劫持的DNS server进行中间人攻击,可直接批量获取大量主机权限。

修复方案:

1) 打patch,可参考官方介绍

参考文献:

https://googleonlinesecurity.blogspot.ca/2016/02/cve-2015-7547-glibc-getaddrinfo-stack.html?m=1

https://isc.sans.edu/diary/CVE-2015-7547: Critical Vulnerability in glibc getaddrinfo/20737

源链接

Hacking more

...