伤心欲绝:它是什么,有什么缓解方法?


204

这是有关了解和修复Heartbleed安全问题的规范问题。

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

如何检查我的系统是否受到影响?如何缓解此漏洞?我是否应该担心自己的密钥或其他私人数据遭到破坏?我还要关注其他哪些副作用?


14
缓解了心脏出血漏洞涉及到更多的不仅仅是新的密钥。(链接到我对信息安全StackExchange的回答)
scuzzy-delta 2014年

我听到了您的声音,但我认为EEAA全面涵盖了以下内容。
MadHatter 2014年

我同意:这是一个很好的答案,但是heartbleed.com竭尽全力指出,除了新的密钥对之外,还有其他考虑因素-例如强制更改密码和会话无效。
scuzzy-Delta 2014年

1
@ scuzzy-delta-好点。我已经做出了CW答案,请随时使用该信息进行编辑/改进。
EEAA 2014年

3
关于它的最佳示例-(毫不奇怪)XKCD:xkcd.com/1354
Wayne Werner

Answers:


118

首先,在吓跑之前,请确保您了解此漏洞是否确实适用于您。如果您有一台服务器,但实际上从未使用过TLS的任何应用程序,那么这不是您要解决的优先事项。另一方面,如果您曾经使用过启用TLS的应用程序,那么您就来这里了。继续阅读:

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

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

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

原因是什么?

好吧,OpenSSL中的错误代码。是引入漏洞的提交,是修复漏洞的提交。该错误于2011年12月出现,并于2014年4月7日进行了修补。

该错误也可以看作是更大问题的征兆。两个相关的问题是:(1)确保没有将错误的代码引入代码库的过程是什么;(2)为什么协议和扩展如此复杂且难以测试。项目(1)是OpenSSL和许多其他项目的治理和流程问题。许多开发人员只是抵制代码回顾,分析和扫描之类的做法。IETF的TLS WG正在讨论项目(2)。请参阅Heartbleed /协议的复杂性

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

我不会猜测这是一个真正的错误,还是代表一个坏演员溜入了一些代码。但是,为OpenSSL开发代码的人表示这是无意的。看到引入严重的“严重失误”安全漏洞的曼恩否认他是故意插入的

哪些操作系统和OpenSSL版本容易受到攻击?

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

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

这是可怕的部分。据我们所知,没有已知的方法来检测此漏洞是否已被利用。从理论上讲,IDS签名可能很快就会发布,可以检测到此漏洞,但是在撰写本文时,这些签名尚不可用。

有证据表明,Heartbleed最早在2013年11月就已在野外得到积极利用。请参阅EFF的《狂野之心:2013年11月,情报机构是否在使用Heartbleed?彭博社报道说,NSA在漏洞引入后不久就为该漏洞利用了武器。参见国家安全局说多年来利用令人流血的Bug谋取情报。但是,美国情报界否认了彭博社的说法。请参阅记录中的IC

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

如果您要在系统上维护OpenSSL,则只需发出以下命令openssl version

$ openssl version
OpenSSL 1.0.1g 7 Apr 2014

如果分配是维持OpenSSL的,那么你可能无法确定OpenSSL版本由于使用背打补丁openssl命令或包信息(例如apt-getdpkgyumrpm)。大多数(所有?)发行版使用的反向修补过程仅使用基本版本号(例如,“ 1.0.1e”);和不包括有效的安全版本(例如,“1.0.1g”)。

超级用户方面存在一个悬而未决的问题,用于在对软件包进行反修补时确定OpenSSL和其他软件包的有效安全版本。不幸的是,没有有用的答案(除了查看发行版的网站)。遇到反向修补程序时,请参阅确定有效的安全版本

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

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

在Heartbleed宣布的几小时内,互联网上的几个人公开发布了可公开访问的Web应用程序,这些应用程序可以用来检查服务器是否存在此漏洞。在撰写本文时,我尚未进行任何审查,因此我不会进一步公开他们的申请。借助您首选的搜索引擎,可以相对容易地找到它们。

如何缓解此漏洞?

升级到非漏洞版本并重置或重新保护易受攻击的数据。如Heartbleed网站上所述,适当的响应步骤大致如下:

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

有关更详细的分析和答案,请参阅网站运营商应如何处理Heartbleed OpenSSL漏洞?在安全堆栈交换上。

我是否应该担心自己的密钥或其他私人数据遭到破坏?我还应该关注其他哪些副作用?

绝对。系统管理员需要假设使用易受攻击的OpenSSL版本的服务器确实受到了威胁,并做出了相应的响应。

漏洞披露后不久,Cloudfare提出了一项挑战,以查看是否可以在实践中恢复服务器的私钥。挑战由Fedor Indutny和Ilkka Mattila独立赢得。请参阅“流血的挑战”

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

链接转储,适用于那些寻求更多详细信息的人:


可以在Heartbleed披露时间表中找到披露事件的相当详细的时间表:谁知道何时何地


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


42
+1表示关机。下。你的。服务器。* -如果您在SSL非常重要的地方进行任何操作,请先将其关闭,直到解决问题为止。另外,不要忘了在修补服务器后安装新证书(使用新密钥)-重用您的旧密钥(可能已被破坏)会破坏修补漏洞的整个目的……
voretaq7 2014年

29
-重新启动所有链接到OpenSSL库的服务。在不重新启动守护程序的情况下升级OpenSSL与根本不升级一样好。
EEAA 2014年

14
确实-在进行任何主要补丁(如OpenSSL)之后,我认为重新启动计算机以确保您不会错过任何东西是一个好规则。
voretaq7

5
测试人员之一已开源:github.com/FiloSottile/Heartbleed
Riking 2014年

3
@EEAA,“关闭服务器”并不意味着您必须切断电源。这意味着关闭(或重新配置为禁用ssl / tls)apache,或执行该服务的任何服务。
psusi 2014年


36

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版本,仍支持服务器版本,并接收安全更新。但是令人讨厌的漏洞并未影响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接收到令人讨厌的补丁。

对于所有其他过时的ubuntu版本,这意味着基本上必须重新安装。

确认已应用补丁

本质上,运行openssl version -a并确保构建日期是2014年4月7日或更晚,但请在此处查看更多信息

重启

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


我不能说其他版本,但是似乎有一个补丁可以精确使用(12.04)。尽管我不能肯定地说可以解决此漏洞,但至少是在相关的commit(Mon Apr 7 20:31:55 UTC 2014)之后进行了编译。
Calrion 2014年

@Calrion:OpenSSL的补丁程序还是OpenSSL的Debian打包程序?OpenSSL已得到修复,并发布了新版本。
内森·奥斯曼

在更新openssl时,现有连接会发生什么?他们会被丢弃吗?
pdeva 2014年

2
这取决于您使用的Web服务器以及更新方式。话虽如此,我不会担心删除现有连接,因为它们使用的是易受攻击的版本。
内森·奥斯曼


14

RedHat 6.5和CentOS 6.5

这些是脆弱的。 RedHat的勘误表RHSA-2014-0376说,有可用的修补程序库,任何受影响的人都应尽早升级。

在撰写本文时,CentOS尚无固定版本,但Karanbir Singh在CentOS公告中的帖子说,他们已经生产了opensl的更新版本(openssl-1.0.1e-16.el6_5.4.0.1,请注意最后四位数字很重要),该版本具有可利用的TLS。命令已禁用,可以安全地应用该命令,因为最终发布该命令时,它将被固定版本覆盖。

临时修复的版本似乎尚未安装到所有镜像中,但位于主存储库中,网址http://mirror.centos.org/centos/6/updates/x86_64/Packages/(对于i686)。

编辑:正如Iain所说的那样,现在确实有一个C6.5的完整版本,并且它似乎已经匆匆推向了镜子。yum update我的服务器直接获得了它;是openssl-1.0.1e-16.el6_5.7

6.5之前的RH6和C6版本

这些都不是脆弱的。根据Red Hat的此咨询

此问题不会影响Red Hat Enterprise Linux 5和Red Hat Enterprise Linux 6.4及更早版本附带的openssl版本。

Karanbir Singh在CentOS公告中的发布同样清楚地说明了版本控制:

今天早些时候,我们意识到CentOS-6.5中附带的openssl中存在严重问题



13

德比安·威兹(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

1
如果您要获取更新,wheezy/security则可以使用apt-get update && apt-get upgrade。或者,使用一个交互式的软件包管理器只更新包openssllibssl1.0.0libssl1.0.0-dbglibssl-dev(你的系统上如安装)。
2014年

使用apt-get不能为我解决问题-仍然显示OpenSSL 1.0.1e 2013
user568829 2014年

感谢@ michael-kjorling,当我这样做时它不可用,但是它是最安全和正确的升级方式。
jacksoncage 2014年

2
应用修补程序openssl版本后,@ user568829仍会显示,OpenSSL 1.0.1e 11 Feb 2013因为该修补程序称为1.0.1e-2。您可以检查dpkg -l openssl并显示版本1.0.1e-2+deb7u6
jacksoncage 2014年

2
我建议在更新OpenSSL之后重新启动主机,这不是因为严格必要,而是为了让您高枕无忧,至少所有动态加载OpenSSL库的事物都在使用新版本。(静态链接是另一回事。)也就是说,我认识到某些服务器在可能接受服务重启的所有情况下都无法轻易重启。
CVn 2014年

9

我想指出的是,私钥并不是唯一应被视为已泄露的资产。该错误可能会泄漏与OpenSSL在相同地址空间(即相同进程)中运行的任何内存。因此,如果您正在运行服务器进程,该进程静态或动态链接了易受攻击的OpenSSL版本,则该进程曾经处理过的任何信息(包括密码,信用卡号和其他个人数据)都应视为可能受到威胁。


9

FreeBSD 10.0或来自端口的openssl

FreeBSD的安全团队已经发布了关于咨询CVE-2014-0160(又名“心脏出血漏洞”)和:是FreeBSD-SA-14:06.openssl

  1. 更新FreeBSD

    • 通过二进制补丁更新FreeBSD

      可以通过freebsd-update(8)实用程序更新在i386amd64平台上运行FreeBSD 的RELEASE版本的系统:

      # freebsd-update fetch
      # freebsd-update install
      
    • 从源代码更新FreeBSD

      1. 从下面的位置下载相关补丁,并使用PGP实用程序验证分离的PGP签名。

        # fetch http://security.FreeBSD.org/patches/SA-14:06/openssl-10.patch
        # fetch http://security.FreeBSD.org/patches/SA-14:06/openssl-10.patch.asc
        # gpg --verify openssl-10.patch.asc
        
      2. 以root用户身份执行以下命令:

        # cd /usr/src
        # patch < /path/to/patch
        
      3. 重新编译操作系统

        FreeBSD手册所述使用buildworldinstallworld

  2. 使用最低版本1.0.1_10更新openssl端口

  3. 使用该库重新启动所有守护程序,或重新引导系统

  4. 仿佛您的系统已受到威胁,请重新颁发所有ssl密钥和/或证书以及可能泄漏的信息(请参阅EEAA更一般的答案)。

FreeBSD 9.x和FreeBSD 8.x

这些系统是不容易心脏出血漏洞默认情况下的问题,因为依靠旧0.9.x版本版本的OpenSSL库,除非你安装OpenSSL的 从端口(见楼上)。

如果这些系统不容易受到Heartbleed问题的影响,则明智的选择是,由于另一个本地漏洞,应尽快升级系统(请参见楼上的FreeBSD-SA-14:06.openssl和“ FreeBSD 10.0”部分):

本地攻击者可能能够窥探签名过程,并可能从中恢复签名密钥。[CVE-2014-0076]

注意事项

最初的Heartbleed公告将FreeBSD 8.4和9.1列为潜在漏洞。由于缺少心跳扩展(默认的FreeBSD openssl库的版本为0.9.x),这不是正确的。


3

我发现几乎无法确定我使用的几种设备上正在使用的SSL版本。尽管从技术上讲,缓解不了能够识别当前易受攻击的主机的能力还是我的榜首。

我组装了一个小型VM,它将使用FiloSottile的测试模块对任意主机和端口进行检查。乍看之下,代码看起来不错。

完成的VM的发布在这里。它是VMX格式。

警告语

该脚本和VM将显示系统的当前状态。在过去的某个时刻,您的系统很可能处于脆弱状态,并且可能已经被滥用。

此处显示的某些内容绝对是修复的当务之急,但是它并没有使您摆脱应用更新和更改所有键的麻烦。


我刚收到Snapt的电子邮件,是他们的。BOLO (正在监视)
雅各布

2

Amazon Linux(Amazon EC2中使用的Linux发行版)

https://aws.amazon.com/amazon-linux-ami/security-bulletins/ALAS-2014-320/

问题概述: 在OpenSSL处理TLS心跳扩展数据包的方式中发现缺少边界检查。该缺陷可能被用来从连接的客户端或服务器揭示多达64k的内存。

受影响的版本: 安装了openssl 1.0.1的所有Amazon Linux AMI,这是任何Amazon Linux AMI 2013.03或更高版本,以及任何已升级到2013.03或更高版本的Amazon Linux AMI。默认情况下,OpenSSL已安装在Amazon Linux AMI上。

受影响的软件包: openssl

问题更正:运行yum update openssl以更新系统。一旦安装了新软件包,就需要您手动重启所有使用openssl的服务,或者重新启动实例。尽管新软件包仍名为openssl-1.0.1e,但它确实包含CVE-2014-0160的修复程序。

新包装: i686:

openssl-1.0.1e-37.66.amzn1.i686

openssl-static-1.0.1e-37.66.amzn1.i686

openssl-perl-1.0.1e-37.66.amzn1.i686

openssl-devel-1.0.1e-37.66.amzn1.i686

openssl-debuginfo-1.0.1e-37.66.amzn1.i686

x86_64:

openssl-devel-1.0.1e-37.66.amzn1.x86_64

openssl-1.0.1e-37.66.amzn1.x86_64

openssl-debuginfo-1.0.1e-37.66.amzn1.x86_64

openssl-perl-1.0.1e-37.66.amzn1.x86_64

openssl-static-1.0.1e-37.66.amzn1.x86_64
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.