Time: 2019-11-11  网络安全等级保护资讯网

SUSE关于Glibc缓冲区溢出漏洞CVE-2015-7547

  漏洞描述

  2016年2月19日,Google 的安全研究团队披露了glibc getaddrinfo溢出漏洞。经研究发现,所有Debian、Red Hat以及更多其它Linux发行版,只要glibc版本2.9及之后版本就会受到该溢出漏洞影响。攻击者可以通过该漏洞直接批量获取大量主机权限。glibc是GNU发布的libc库,即c运行库。glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,本身也提供了许多其它一些必要功能服务的实现。该漏洞受影响版本GNU 2.9及之后版本。

  触发因素

  CVE-2015-7547是一个基于堆栈的缓冲区溢出漏洞,当应用使用到getaddrinfo()函数(处理名字到地址以及服务到端口的转换)时,攻击者通过构造的域名、DNS服务器、中间人攻击利用该漏洞,导致在服务器上执行代码。

  glibc通过alloca()函数在栈中为_nss_dns_gethostbyname4_r函数2048字节的空间,用于托管DNS响应。若响应大于2048字节,程序会从堆中重新分配一个缓冲区,并更新所有信息(缓冲区指针,缓冲区大小和响应大小)。在一定条件下,会出现栈缓冲区和新分配的堆内存的错误匹配,导致超过栈缓冲区大小的响应仍然存储在栈中,进而发生缓冲区溢出。触发该漏洞的利用向量十分普遍,且存在于ssh,sudo,curl等工具中。

  涉及系统

  ① SUSE11 SP1/SP3:

  a. SUSE11 SP1(通用):2.11.1-0.64.1.10204.0.0.PTE.967023之前的版本

  b. SUSE11SP1(RM的AAA和onlineMediation产品):2.11.1-0.74.1之前的版本;

  c. SUSE11SP3:2.11.3-17.95.2之前版本。

  ② SUSE10SP1/SP2:不涉及。

  ①

  漏洞检测

  1) SUSE版本查询方法:

  # cat /etc/SuSE-release

  2) Glibc版本查询方法:

  linux:/ # rpm -qa | grep glibc

  rpm -qa | grep glibc

  整改措施

  请下载以下操作系统安全补丁升级:

  到相应官方网站或镜像下载SUSE 11 SP1 & SUSE 11 SP3补丁。

  升级步骤:

  # cd /tmp

  # tar -zxvf glibc_service_upgrade-1.1.tar.gz

  # cd glibc_service_upgrade

  # vi hosts.lst

  升级工具会使用root用户通过SSH登录待升级主机进行升级。一个待升级主机信息为一行,其中#开头的行为注释,参考示例如下:

  #

  10.71.271.51 123456

  如果待升级主机进行了安全加固,不能通过root用户直接登录系统,需要填写一个非root用户的名称和密码。升级工具会首先使用这个非root用户通过SSH登录主机,之后切换到root用户对待升级主机进行升级,示例如下:

  #

  192.168.100.1 123456 sshusr 654321

  将主机IP填写为“127.0.0.1”,可对升级服务器自身glibc包升级。

  # ./check.sh

  checking hosts, please wait......

  host_ ip need _upgrade details

  10.71.171.154 YES * glibc need to upgrade *

  确保所有待升级主机输出类似如下信息,表示主机需要升级。

  YES * glibc need to upgrade*

  # ./upgrade.sh

  upgrade.sh脚本执行输出类似如下信息:

  ============================= verifying host info ==========================

  10.71.171.154 host information is correct

  ============================= checking =====================================

  10.71.171.154 checking system

  10.71.171.154 checking system completed

  ============================ statistic =====================================

  host_ip need_upgrade details

  10.71.171.154 YES * glibc need to upgrade *

  ============================ upgrading =====================================

  10.71.171.154 uploading package

  10.71.171.154 uploading package completed

  10.71.171.154 upgrading system

  10.71.171.154 upgrading system completed

  ============================= checking =====================================

  10.71.171.154 checking system

  10.71.171.154 checking system completed

  ============================ statistic =====================================

  host_ip need_upgrade details

  10.71.171.154 NO glibc already upgraded

  # reboot

  # rm -rf /tmp/glibc_service_upgrade/hosts.lst

  回退

  # cd /tmp/glibc_service_upgrade

  # ./rollback.sh

  rollback.sh脚本执行输出类似如下信息:

  rollbacking hosts, please wait......

  host_ip ………rollback_status….details

  10.71.171.154….succeed….glibc already rollback

  对于每个待回滚主机,输出“glibc already rollback”或者“glibc rollback succsed”表示升级成功

本文是万方安全研究院原创文章,

转载请标明出处:http://www.dengjibaohu.org/dbzg/173.html。

18933931888

工作时间:法定工作日,9:00~18:00

广州万方计算机科技有限公司 ©版权所有 2019-2020 粤ICP备08124637号

本站文章内容部分来源于网络转载,版权归作者所有。文章内容仅代表作者独立观点,不代表本站立场,转载目的在于传递更多信息。如有侵权,请联系删除。