中标软件有限公司
全国客服电话:400-089-1870
上海总部
电话:021-51098866
上海市番禺路1028号数娱大厦10层
北京分公司
电话:010-51659955
北京市北四环西路9号银谷大厦20层
中标软件提醒广大用户尽快补上glibc漏洞
2016年02月18日 浏览次数:6457次 国产操作系统中标软件
近日,开源安全研究团队披露了Glibc getaddrinfo溢出漏洞,该漏洞影响范围较大,涉及当前主要的Linux发行版,包括红帽V6/V7、CENTOSV6/V7、中标麒麟V6等产品,如果您当前使用的Linux操作系统的Glibc版本大于2.9就会受到该溢出漏洞影响。通过对安全漏洞进行分析,攻击者可以通过该漏洞直接批量获取大量主机权限。如果您使用的Linux操作系统可以由互联网直接访问,中标软件安全团队建议您尽快升级安全补丁。中标麒麟高级服务器操作系统V5系列不受此安全漏洞影响。中标软件安全团队提醒各位用户尽快进行漏洞修复,可致电我们的客户服务热线400-706-1825寻求支持。
漏洞危害
Glibc组件包含了大量标准库,这些标准库会被众多的程序调用。其中 libresolv库用来实现主机名与IP地址之间转换的功能。作为glibc包含的组件之一,nss_dns模块通过libresolv库进行DNS查询,从而实现Name Service Switch(NSS)服务。
Libresolv库中的代码在执行A/AAAA 双重DNS查询时会触发基于堆栈的缓冲区溢出漏洞。远程攻击者可以通过创建特殊的DNS响应,造成libresolv崩溃或有可能以运行库用户的身份和权限执行代码;调用函数send_dg(UDP查询)和send_vc(TCP查询)时会触发缓冲区溢出。
漏洞分析
通过对安全漏洞进行分析,glibc通过alloca函数在堆栈中保有2048字节。响应DNS查询请求的函数为_nss_dns_gethostbyname4_r,然后继续调用send_dg和send_vc两个函数。如果响应大于2048字节,就会从堆栈分配一个新的缓冲区并更新所有的信息,包括缓冲区指针、新的缓冲区大小和响应包大小。在某些情况下,这一过程会造成堆栈缓冲之间的不匹配,并会再次分配新的堆栈。最终导致堆栈缓冲将全部被用于存储DNS响应,所以该行为会导致堆栈缓冲的溢出。
验证方法
目前,Google已提供了漏洞验证工具,下载地址:https://github.com/fjserna/CVE-2015-7547
根据漏洞描述,可以伪造一个的DNS Server作为中间人,来验证该漏洞。测试过程如下:
1)更改DNS 解析为 127.0.0.1;
2)执行 CVE-2015-7547-poc.py;
3)编译 CVE-2015-7547-client.c , 然后执行CVE-2015-7547-client。
若操作系统包含此漏洞,会造成Segmentation Fault,如下图所示。