-
-
关于GNU glibc getaddrinfo()堆栈缓冲区溢出漏洞的安全公告
-
发表于: 2016-2-25 16:48 2467
-
新闻链接:http://www.cert.org.cn/publish/main9/2016/20160218140507809366513/20160218140507809366513_.html
新闻时间:时间:2016-02-18
新闻正文:近日,国家信息安全漏洞共享平台(CNVD)收录了GNU glibc getaddrinfo()堆栈缓冲区溢出漏洞(CNVD-2016-01100,对应CVE-2015-7547)。攻击者利用漏洞可通过构建恶意dns服务或使用中间人的方法对受害者发起攻击,对Linux终端设备构成安全威胁。
一、漏洞情况分析
GNU glibc是一款按LGPL许可协议发布的开源C语言编译程序,是Linux操作系统中C库的实现。
glibc中getaddrinfo函数在处理特定dns response数据包时存在栈溢出漏洞。由于glibc通过alloca()函数在栈中为_nss_dns_gethostbyname4_r函数2048字节的空间,用于托管DNS响应;若响应大于2048字节,程序会从堆中重新分配一个缓冲区,并更新所有信息(缓冲区指针,缓冲区大小和响应大小);在一定条件下,会出现栈缓冲区和新分配的堆内存的错误匹配,导致超过栈缓冲区大小的响应仍然存储在栈中,进而发生缓冲区溢出。攻击者利用漏洞可通过构建恶意dns服务或使用中间人攻击的方法对Linux主机或相关设备发起攻击,导致远程代码执行,进而可获取用户终端控制权。
CNVD对该漏洞的综合评级为“高危”。
二、漏洞影响范围
漏洞影响glibc>2.9的所有版本,glibc是Linux系统中最底层的API,应用于众多Linux发行版本中,因此该漏洞影响范围广泛。所有Debian 系列、Red Hat 系列的Linux 发行版,只要glibc版本大于2.9均受该漏洞影响。
三、漏洞修复建议
目前,互联网上已披露针对该漏洞的利用原理分析及利用代码。厂商暂未发布升级补丁修复该漏洞,CNVD建议用户采取如下临时措施:该漏洞存在于resolv/res_send.c文件中,当getaddrinfo()函数被调用时会触发该漏洞,技术人员可以通过将TCP DNS响应的大小限制为1024字节,并丢弃所有超过512字节的UDP DNS数据包来缓解该问题。
新闻时间:时间:2016-02-18
新闻正文:近日,国家信息安全漏洞共享平台(CNVD)收录了GNU glibc getaddrinfo()堆栈缓冲区溢出漏洞(CNVD-2016-01100,对应CVE-2015-7547)。攻击者利用漏洞可通过构建恶意dns服务或使用中间人的方法对受害者发起攻击,对Linux终端设备构成安全威胁。
一、漏洞情况分析
GNU glibc是一款按LGPL许可协议发布的开源C语言编译程序,是Linux操作系统中C库的实现。
glibc中getaddrinfo函数在处理特定dns response数据包时存在栈溢出漏洞。由于glibc通过alloca()函数在栈中为_nss_dns_gethostbyname4_r函数2048字节的空间,用于托管DNS响应;若响应大于2048字节,程序会从堆中重新分配一个缓冲区,并更新所有信息(缓冲区指针,缓冲区大小和响应大小);在一定条件下,会出现栈缓冲区和新分配的堆内存的错误匹配,导致超过栈缓冲区大小的响应仍然存储在栈中,进而发生缓冲区溢出。攻击者利用漏洞可通过构建恶意dns服务或使用中间人攻击的方法对Linux主机或相关设备发起攻击,导致远程代码执行,进而可获取用户终端控制权。
CNVD对该漏洞的综合评级为“高危”。
二、漏洞影响范围
漏洞影响glibc>2.9的所有版本,glibc是Linux系统中最底层的API,应用于众多Linux发行版本中,因此该漏洞影响范围广泛。所有Debian 系列、Red Hat 系列的Linux 发行版,只要glibc版本大于2.9均受该漏洞影响。
三、漏洞修复建议
目前,互联网上已披露针对该漏洞的利用原理分析及利用代码。厂商暂未发布升级补丁修复该漏洞,CNVD建议用户采取如下临时措施:该漏洞存在于resolv/res_send.c文件中,当getaddrinfo()函数被调用时会触发该漏洞,技术人员可以通过将TCP DNS响应的大小限制为1024字节,并丢弃所有超过512字节的UDP DNS数据包来缓解该问题。
赞赏
看原图
赞赏
雪币:
留言: