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 地址:github.com/fjserna/CVE-2015-7547
我在自己的本地 lubuntu 上进行测试,libc 版本为 2.19。lubuntu系列也属于Debian 的一个发行版,故理论上满足漏洞条件。
测试过程如下:
根据漏洞描述,我们可以做一个假的DNS Server 作为中间人,来验证该漏洞。
若含有漏洞,会造成Segmentation Fault。
由于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