Debian、Red Hat 以及更多其它 Linux 发行版,只要 glibc 版本大于 2.9 就会受到影响,可直接批量获取大量主机权限。
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 博客中所述,该漏洞应该是可以绕过内存防护技术,从而形成代码执行漏洞。
POC 使用测试
POC 地址:github.com/fjserna/CVE-2015-7547
我在自己的本地 lubuntu 上进行测试,libc 版本为 2.19。lubuntu系列也属于Debian 的一个发行版,故理论上满足漏洞条件。
测试过程如下:
根据漏洞描述,我们可以做一个假的DNS Server 作为中间人,来验证该漏洞。
更改DNS 解析为 127.0.0.1,刷新DNS 缓存 sudo /etc/init.d/nscd restart
执行 CVE-2015-7547-poc.py , 注意无需更改 ip_addr 。
编译 CVE-2015-7547-client.c , 执行CVE-2015-7547-client
若含有漏洞,会造成Segmentation Fault。
由于gilbc 2.9 是在2008年发行的,所以大量Linux 系统都会受到该漏洞影响。若一旦绕过内存防护技术,则该漏洞可以成为一大杀器。被劫持的DNS server进行中间人攻击,可直接批量获取大量主机权限。
修复方案:
1) 打patch