Heartbleed:它是什么?有哪些方法可以缓解它?

Heartbleed:它是什么?有哪些方法可以缓解它?

这是一个典型问题关于理解和修复 Heartbleed 安全问题。

CVE-2014-0160 又名“Heartbleed”到底是什么?其原因是什么?哪些操作系统和 OpenSSL 版本容易受到攻击?其症状是什么?是否有任何方法可以检测成功的漏洞?

如何检查我的系统是否受到影响?如何缓解此漏洞?我是否应该担心我的密钥或其他私人数据已被泄露?我还应该担心哪些其他副作用?

答案1

第一的在惊慌失措之前,请确保您了解此漏洞是否真的适用于您。如果您有服务器,但实际上从未使用过任何使用 TLS 的应用程序,那么这不是您需要修复的首要问题。另一方面,如果您曾经有过启用 TLS 的应用程序,那么您将大饱眼福。继续阅读:

CVE-2014-0160 又名“Heartbleed”到底是什么?

这真是一团糟。简而言之,在 OpenSSL 1.0.1 至 1.0.1f 版本中发现了一个可远程利用的漏洞,攻击者可以通过该漏洞读取系统内存的某些部分。这些部分包含敏感数据,例如私钥、预共享密钥、密码和高价值的公司数据等。

该漏洞由 Google 安全部门的 Neel Mehta(2014 年 3 月 21 日)和芬兰 IT 安全测试公司 Codenomicon(2014 年 4 月 2 日)独立发现。

原因何在?

嗯,OpenSSL 中的代码有错误。这里是引入漏洞的提交,并且这里是修复漏洞的提交。该漏洞于 2011 年 12 月出现,并于今天(2014 年 4 月 7 日)进行了修补。

该错误也可以看作是一个更大问题的征兆。两个相关的问题是 (1) 有哪些流程可以确保错误代码不会被引入到代码库中,以及 (2) 为什么协议和扩展如此复杂且难以测试。第 (1) 项是 OpenSSL 和许多其他项目的治理和流程问题。许多开发人员只是抵制代码审查、分析和扫描等做法。第 (2) 项正在 IETF 的 TLS WG 上讨论。请参阅Heartbleed/协议复杂性

错误代码是否被恶意插入?

我不会猜测这是否真的是错误,或者可能是恶意人员偷偷插入的代码。但是,开发 OpenSSL 代码的人表示这是无意的。请参阅引入严重“Heartbleed”安全漏洞的人否认自己是故意引入的

哪些操作系统和 OpenSSL 版本存在此漏洞?

如上所述,任何使用 OpenSSL 1.0.1 至 1.0.1f 的操作系统或与之链接的应用程序。

有哪些症状,有什么方法可以检测成功的漏洞?

这才是最可怕的部分。据我们所知,目前还没有已知的方法来检测这个漏洞是否被利用。理论上,IDS 签名可能会很快发布,可以检测到这个漏洞,但截至撰写本文时,这些签名尚未发布。

有证据表明,早在 2013 年 11 月,Heartbleed 就已在野外被积极利用。请参阅 EFF 的内心狂野:情报机构在 2013 年 11 月使用了 Heartbleed 漏洞吗?据彭博社报道,美国国家安全局在该漏洞被引入后不久就利用该漏洞进行了攻击。参见据称 NSA 多年来一直利用 Heartbleed 漏洞获取情报。然而,美国情报界否认了彭博社的说法。参见IC 记录

我如何检查我的系统是否受到影响?

如果如果你在系统上维护 OpenSSL,那么你可以简单地发出openssl version

$ openssl version
OpenSSL 1.0.1g 7 Apr 2014

如果发行版维护 OpenSSL,那么您可能无法确定 OpenSSL 的版本,因为使用命令openssl或软件包信息(例如,apt-getdpkg或)进行反向修补。大多数(所有?)发行版使用的反向修补过程仅使用基本版本号(例如,“1.0.1e”);并且yumrpm不是包括一个有效安全版本(例如“1.0.1g”)。

Super User 上有一个未解决的问题,用于确定当软件包打补丁时 OpenSSL 和其他软件包的有效安全版本。不幸的是,没有有用的答案(除了查看发行版的网站)。请参阅确定反向补丁时的有效安全版本?。

根据经验法则:如果您曾经安装过受影响的版本之一,并且曾经运行过链接 OpenSSL 以获取 TLS 支持的程序或服务,那么您就很容易受到攻击。

哪里可以找到测试漏洞的程序?

在 Heartbleed 公布后的几个小时内,互联网上有几个人公布了可公开访问的 Web 应用程序,据说这些应用程序可用于检查服务器是否存在此漏洞。截至撰写本文时,我尚未审查任何应用程序,因此我不会进一步公布他们的应用程序。借助您喜欢的搜索引擎,您可以相对轻松地找到它们。

如何缓解此漏洞?

升级到无漏洞版本并重置或重新保护易受攻击的数据。如心脏出血站点,适当的响应步骤大致如下:

  1. 修补易受攻击的系统。
  2. 重新生成新的私钥。
  3. 向您的 CA 提交新的 CSR。
  4. 获取并安装新的签名证书。
  5. 使会话密钥和 cookie 无效
  6. 重置密码和共享秘密
  7. 撤销旧证书。

更详细的分析和解答,请参见网站运营商应该如何应对 Heartbleed OpenSSL 漏洞?在安全 Stack Exchange 上。

我是否应该担心我的密钥或其他私人数据已被泄露?我还应该担心哪些其他副作用?

当然。系统管理员需要认为他们的使用易受攻击的 OpenSSL 版本的服务器确实受到了攻击,并做出了相应的响应。

漏洞披露后不久,Cloudfare 发起了一项挑战,看看能否在实践中恢复服务器的私钥。Fedor Indutny 和 Ilkka Mattila 分别赢得了这项挑战。参见心脏滴血挑战

在哪里可以找到更多信息?

链接转储,供那些寻找更多详细信息的人使用:


披露事件的详细时间表可参见Heartbleed 披露时间表:谁知道什么以及何时知道


如果你是一名程序员,并且对各种编程技巧感兴趣,比如通过 OpenSSL 的回调检测 Heartbleed 攻击msg_cb,那么请参阅 OpenSSL 的安全公告 2014047

答案2

XKCD 对这个 bug 进行了简单的解释:

1354 号

答案3

Ubuntu 12.04、12.10 和 13.10

Ubuntu 已经发布USN-2165-1,表明更新的软件包现已在档案中可用。运行以下两个命令来获取修复程序。

sudo apt-get update
sudo apt-get upgrade

Ubuntu 14.04

我已将包含新版本 (1.0.1g) 的 Debian 软件包上传到为此目的设置的 PPA。这三个命令将把我的 PPA 添加到您的系统、更新可用软件包列表并升级所有内容:

sudo add-apt-repository ppa:george-edison55/openssl-heartbleed-fix
sudo apt-get update
sudo apt-get upgrade

注意:PPA 还提供了适用于 Ubuntu 12.04 和 13.10 的软件包,以防您实际上希望运行新版本(1.0.1g)而不是仅使用档案中的修补版本。

Ubuntu 10.04

这是一个 LTS 版本,服务器版本仍然受支持并接收安全更新。但 heartbleed 漏洞并未影响 ubuntu 10.04 标准安装的 openssl 包,因为版本低于 1.0.1。

桌面版已达到使用寿命,需要升级/重新安装。

Ubuntu 13.04 及其他过时版本

Ubuntu 13.04 的支持周期非常短,你可能没有想到。它已经到了生命周期的尽头,不再收到安全更新。它早就应该升级了。如果仍有人在使用它,请立即升级,要么从头开始,要么可以按照以下简单步骤非破坏性地升级到 13.10:http://www.tecmint.com/upgrade-ubuntu-13-04-raring-ringtail-to-ubuntu-13-10-saucy-salamander/升级后,系统从 13.10 开始接收 heartbleed 补丁。

对于所有其他过时的 ubuntu 版本,这意味着基本上需要全新安装。

验证补丁是否已应用

本质上,运行openssl version -a并确保构建日期是 2014 年 4 月 7 日或更晚,但查看更多这里

重启

确保所有依赖 OpenSSL 的服务都重新启动的最佳方法是重启

答案4

Debian Wheezy

Debian 已发布DSA-2896-1修补后的库是可在此处获得. Shell 脚本是可在此处获得

1. 补丁

Apt-get 存储库已更新,因此现在可以通过以下方式获取修补的库apt-get update && apt-get upgrade

apt-get upgrade libssl1.0.0 openssl

或者(不推荐)可以手动升级软件包:

wget http://security.debian.org/pool/updates/main/o/openssl/libssl1.0.0-dbg_1.0.1e-2+deb7u5_amd64.deb
wget http://security.debian.org/pool/updates/main/o/openssl/openssl_1.0.1e-2+deb7u5_amd64.deb
wget http://security.debian.org/pool/updates/main/o/openssl/libssl1.0.0_1.0.1e-2+deb7u5_amd64.deb
wget http://security.debian.org/pool/updates/main/o/openssl/libssl-dev_1.0.1e-2+deb7u5_amd64.deb

dpkg -i openssl_1.0.1e-2+deb7u5_amd64.deb
dpkg -i libssl1.0.0_1.0.1e-2+deb7u5_amd64.deb
dpkg -i libssl1.0.0-dbg_1.0.1e-2+deb7u5_amd64.deb
dpkg -i libssl-dev_1.0.1e-2+deb7u5_amd64.deb

2. 重启服务器/服务

为了获得最佳保护,请重新启动整个服务器,或者如果服务器不能脱机,则重新启动所需的服务。

3.检查OpenSSL版本

love@server:~$ openssl version
OpenSSL 1.0.1e 11 Feb 2013
love@server:~$ dpkg -l libssl1.0.0
||/ Name                    Version          Architecture     Description
+++-=======================-================-================-====================================================
ii  libssl1.0.0                 1.0.1e-2+deb7u6  amd64            SSL shared libraries

相关内容