如何修补和保护Linux Glibc Getaddrinfo基于堆栈的缓冲区溢出零日漏洞CVE-2014-7547和CVE-2014-5229 [16/Feb/2015]

时间:2020-01-09 10:41:50  来源:igfitidea点击:

在libresolv库(glibc)执行双重A/AAAA DNS查询的方式中发现了基于堆栈的关键缓冲区溢出。
远程攻击者可能会崩溃,或者有可能执行在Linux上运行该库的代码。
如何在Linux操作系统上针对glibc getaddrinfo修补和保护服务器或者工作站?
如果GNU C库(glibc)收到特制的网络流量,则可能导致崩溃或者运行程序或者命令。
该漏洞最早由Google和Red Hat报告。

什么是GNU C库漏洞?

自2.9以来的所有glibc版本都受此错误影响。
该漏洞可能会从易受攻击的系统触发DNS查找。
基于DNS的远程执行代码漏洞可能导致严重的问题。

CVE-2014-5229导致calloc返回非零内存。
这也可以用来创建拒绝服务攻击。
最好的选择是针对CVE-2014-7547和CVE-2014-5229修补基于Linux的服务器和客户端/工作站/笔记本电脑。

受影响的Linux发行版列表

  • 红帽企业Linux服务器7
  • 红帽企业Linux服务器6
  • CentOS Linux 7
  • CentOS Linux 6
  • Debian Linux 6受到挤压
  • Debian Linux 7狂风
  • Debian Linux 8杰西
  • Ubuntu Linux 15.10
  • Ubuntu Linux 14.04 LTS
  • Ubuntu Linux 12.04 LTS
  • SUSE Linux Enterprise Linux 11
  • SUSE Linux Enterprise Linux 12
  • openSUSE Leap 42.1

我的Linux系统使用哪个GNU C库(Glibc)版本?

输入以下apt-get命令:

$ ldd --version

Ubuntu Linux 14.04 LTS的示例输出:

ldd (Ubuntu EGLIBC 2.19-0ubuntu6.6) 2.19
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

修复Debian或者Ubuntu Linux上的Glibc Getaddrinfo漏洞

执行以下命令:

$ sudo apt-get update
$ sudo apt-get upgrade

这是固定版本:

  • Ubuntu 15.10:libc6 2.21-0ubuntu4.1
  • Ubuntu 14.04 LTS:libc6 2.19-0ubuntu6.7
  • Ubuntu 12.04 LTS:libc6 2.15-0ubuntu10.13

您必须重新启动依赖于glibc的服务,或者最好的选择是按照计划重新启动该框:

$ sudo reboot

修复RHEL/CentOS Linux上的Glibc Getaddrinfo漏洞

执行以下yum命令:

$ sudo yum clean all
$ sudo yum update

您必须重新启动依赖于glibc的服务,或者最好的选择是按照计划重新启动该框:

$ sudo reboot

RHEL/CentOS 7用户只需运行以下命令即可避免重新引导系统:

$ sudo systemctl daemon-reexec

在SUSE Linux Enterprise上修复Glibc Getaddrinfo(和opensuse)

要使用更新的可用版本简单地更新已安装的glibc软件包,请运行:

# zypper up