Warning message

This translation is outdated. For the most up-to-date information, please refer to the English version.

在 Red Hat Enterprise Linux 上如何应对 OpenSSL CVE-2014-0160 Heartbleed bug.

Solution Verified - Updated -

Environment

  • Red Hat Enterprise Linux 6 是受影响的,
    • openssl-1.0.1e 系列的从openssl-1.0.1e-15openssl-1.0.1e-16.el6_5.4 版本都受到影响。
    • RHEL 6.5 上默认安装的 openssl 版本会受到影响。
  • 使用 openssl-1.0.0 系列而不是 openssl-1.0.0e 系列的 Red Hat Enterprise Linux 6.4 不会受到影响。
  • 使用 Red Hat Enterprise Linux 5 或者之前版本不会受到影响。
  • 关于其他受影响的产品,请参照https://access.redhat.com/site/announcements/781953

Issue

  • CVE-2014-0160 是否影响 Red Hat Enterprise Linux ?
  • 如何修复 openssl heartbleed bug?
  • Red Hat Enterprise Linux 5 会受到影响吗?
  • OpenSSH 会受到影响吗?
  • 升级 OpenSSL 后,需要重启哪些服务来使其生效?

Resolution

  • 在该知识库文章的内容公开之前,红帽不知情任何利用此漏洞的情况。然而,在该漏洞披露之后,很多关于此漏洞的攻击情况被公开,这些漏洞会造成使用 OpenSSL 传输信息(包括公钥和私钥的使用)的应用程序泄露重要信息。我们建议您评估此漏洞对您的系统造成的影响,并适时的做出补救措施。

  • 我们建议所有的 RHEL6 OpenSSL 用户升级 openssl 到 openssl-1.0.1e-16.el6_5.7 以上的版本。请参照errata (RHSA-2014:0376)

    • 需要注册系统到 Red Hat Network 或者(Satellites),通过 yum 命令升级:
yum update openssl
  • 使用 libssl.so 库文件的进程需要被重启(请注意不要与libssl3.so弄混)。rpm 或者 repoquery 命令可以查看哪些包需要 libssl 作为依赖。注意,在 32位系统和64为系统上,使用的查询命令是不同的。用 rpm --provides 命令查看 openssl 包包含哪些库文件。
# rpm -q --provides openssl | grep libssl
libssl.so.10  libssl.so.10(OPENSSL_1.0.1)  libssl.so.10(OPENSSL_1.0.1_EC)  libssl.so.10(libssl.so.10) 

# rpm -q --provides openssl | grep libssl
libssl.so.10()(64bit)  libssl.so.10(OPENSSL_1.0.1)(64bit)  libssl.so.10(OPENSSL_1.0.1_EC)(64bit)  libssl.so.10(libssl.so.10)(64bit)
  • rpm --whatrequires 可以查看哪些包需要 libssl 库作为依赖:
# rpm -q --whatrequires 'libssl.so.10'
  • 或者64位用下面的命令。
# rpm -q --whatrequires 'libssl.so.10()(64bit)'
  • repoquery --whatrequires 命令可以查看哪些 yum 仓库中的包会需要 libssl 作为依赖(这些包可能被安装,也可能没有被安装):
# repoquery --whatrequires libssl
  • 除了上面的命令之外,还可以使用 lsof 或者用 grep 命令逐个查询 /proc 目录下的进程,用来确定哪些进程需要重启。这些方法可以查到第三方的软件(非系统自带软件)
    的进程时候使用 libssl 库。例如:
# lsof | grep libssl.so | grep '\<DEL\>'
httpd     15950    root  DEL       REG              253,0              394415 /usr/lib64/libssl.so.1.0.1e
httpd     21863  apache  DEL       REG              253,0              394415 /usr/lib64/libssl.so.1.0.1e

# grep libssl.so /proc/*/maps | grep '(deleted)$' | cut -d/ -f3 | sort -u | xargs -r -- ps u
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     15950  0.0  1.6 354632  8280 ?        Ss   Mar26   0:32 /usr/sbin/httpd
apache   21863  0.0  1.2 354768  6064 ?        S    Apr06   0:00 /usr/sbin/httpd
  • 此外,如果允许的话,重启系统会保证所有的进程都被重启。
  • 这个漏洞影响 OpenSSL 的 libssl 库文件, libssl 是实现 TLS/SSL 和 DTLS 协议的基础库。OpenSSH 不使用这些协议,因此不使用 libssl.
    OpenSSH 使用的是 OpenSSL 的加密算法实现,使用的是 libcrypto 库文件。

Root Cause

  • 关于这个漏洞的官方说明,请参照RHSA-2014:0376:

    An information disclosure flaw was found in the way OpenSSL handled TLS and
    DTLS Heartbeat Extension packets. A malicious TLS or DTLS client or server
    could send a specially crafted TLS or DTLS Heartbeat packet to disclose a
    limited portion of memory per request from a connected client or server.
    Note that the disclosed portions of memory could potentially include
    sensitive information such as private keys. (CVE-2014-0160)

  • 关于此漏洞的更新信息,请通过 Red Hat CVE 数据库查看。CVE-2014-0160

Diagnostic Steps

  • 红帽提供一个工具来检查,各个网站是否受这个漏洞的影响。这个工具只是作为参考,但是升级之后,它会很快的看出升级是否已经生效。

  • 没做过升级的情况下,任何运行 Red Hat Enterprise Linux 6.5 的系统都会受到影响,更具体的说,任何使用 openssl-1.0.1e-15.el6openssl-1.0.1e-16.el6_5.4 版本的 openssl 包的 RHEL6 系统都会受到影响。

  • 检查目前使用的 openssl 版本:

    # rpm -q openssl
    openssl-1.0.1e-16.el6_5.4.x86_64
    

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.