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


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

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

评论

缓解Heartbleed所涉及的不仅仅是新密钥。 (链接到我对Information Security StackExchange的回答)

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

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

@ scuzzy-delta-好点。我已将答案设为CW,因此随时可以使用该信息进行编辑/改进。

关于它的最佳示例-(不足为奇)XKCD:xkcd.com/1354

#1 楼

首先,在吓跑之前,请确保您了解此漏洞是否确实适用于您。如果您有服务器,但实际上从未使用过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?彭博社报道说,在漏洞引入后不久,美国国家安全局就对该漏洞进行了武器处理。参见《国家安全局说多年来利用Heartbleed Bug获取情报》。但是,美国情报界否认了彭博社的说法。请参阅记录中的IC。


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


如果要在系统上维护OpenSSL ,则只需发出openssl version

$ openssl version
OpenSSL 1.0.1g 7 Apr 2014


如果发行版正在维护OpenSSL,则可能由于使用openssl命令或软件包信息(例如apt-getdpkgyumrpm)进行反向修补而无法确定OpenSSL的版本。大多数(所有?)发行版使用的反向修补过程仅使用基本版本号(例如“ 1.0.1e”);并且不包含有效的安全版本(例如“ 1.0.1g”)。

在超级用户上有一个开放的问题,用于在对软件包进行修补时确定OpenSSL和其他软件包的有效安全版本。不幸的是,没有有用的答案(除了查看发行版的网站)。请参阅遇到Backpatching时确定有效的安全版本?。

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


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


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


如何缓解此漏洞?


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


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

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


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


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

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


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


链接转储,那些需要更多详细信息的人:


OpenSSL SECADV 2014047
CVE-2014-0160
Heartbleed
Ubuntu公告
RHEL公告
OpenSSL官方公告


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


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

评论


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

–voretaq7
2014年4月8日在1:30



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

–EEAA
2014年4月8日在1:34

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

–voretaq7
2014年4月8日在1:35

其中一名测试人员已开源:github.com/FiloSottile/Heartbleed

–力争
2014年4月8日在6:57

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

–psusi
2014年4月9日在22:29



#2 楼

XKCD对该错误的简单说明:



评论


“用户Karen”将其密码设置为“ CoHoBaSt”的奖励,“ CoHoBaSt”是[xkcd.com/936 /](更正马电池装订)的缩写。


19-10-21在12:17

#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。的Debian软件包)。 1g)到我为此目的而设置的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)。尽管我不能肯定地说可以解决此漏洞,但至少是在相关的提交之后进行了编译(UTC 2014年4月7日星期一20:31:55)。

–花al
2014年4月8日在4:52

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

–内森·奥斯曼(Nathan Osman)
2014年4月8日4:54



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

– pdeva
2014年4月8日在5:49

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

–内森·奥斯曼(Nathan Osman)
2014年4月8日下午5:51

此后已收到14.04的补丁。

–赛斯
2014年4月8日19:51

#4 楼

RedHat 6.5和CentOS 6.5

这些容易受到攻击。 RedHat的勘误表RHSA-2014-0376说,有可用的修补程序库,受影响的任何人都应尽早进行升级。

在撰写本文时,CentOS尚未有固定版本,但Karanbir Singh拥有固定版本。发布到CentOS-announce表示他们已经生成了openssl的更新版本(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-announce上发布的内容同样清楚地表明了版本控制:


今天早些时候,我们意识到了一个严重的问题。
CentOS-6.5中随附的openssl问题


评论


list.centos.org/pipermail/centos-announce/2014-April/…是否发布此修复程序?

–user9517
2014年4月8日在10:07

#5 楼

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


评论


如果您正在从狂风/安全中获取更新,那么最好使用apt-get update和&& apt-get upgrade。或者,使用交互式软件包管理器仅更新软件包openssl,libssl1.0.0,libssl1.0.0-dbg和libssl-dev(安装在系统上)。

–用户
2014年4月8日在12:40

使用apt-get不能为我解决问题-仍显示OpenSSL 1.0.1e 2013年2月11日

–user568829
2014年4月8日在19:17

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

– jacksoncage
2014年4月9日13:50

@ user568829应用修补程序后,openssl版本仍将显示OpenSSL 1.0.1e,因为该修补程序称为1.0.1e-2。您可以使用dpkg -l openssl进行检查,它应该显示版本1.0.1e-2 + deb7u6

– jacksoncage
2014年4月9日下午13:57

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

–用户
2014年4月9日14:12



#6 楼

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

#7 楼


来自端口的FreeBSD 10.0或openssl

FreeBSD安全团队已发布有关CVE-2014-0160(又名“ Heartbleed”)和FreeBSD-SA-14:06.openssl




更新FreeBSD




通过二进制补丁更新FreeBSD

可以通过freebsd-update(8)实用程序在i386或amd64平台上发布FreeBSD的发行版。

# freebsd-update fetch
# freebsd-update install



更新FreeBSD从源头下载



从下面的位置下载相关补丁,并使用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



以root用户身份执行以下命令:

# cd /usr/src
# patch < /path/to/patch




重新编译操作系统

按照FreeBSD手册所述使用buildworld和installworld。





用最低版本1.0.1_10更新openssl端口
使用该库重新启动所有守护程序,或重新启动系统
,就好像您的系统已受到威胁一样,重新发出所有ssl密钥和/或证书以及可能泄漏的信息(请参阅EEAA更一般的答案)。

FreeBSD 9 .x和FreeBSD 8.x

这些系统默认情况下不易受到Heartbleed问题的影响,因为它依赖于openssl库的较早版本0.9.x,除非您从端口安装了openssl(请参见楼上)。 )。

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


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


注意:

最初的Heartbleed公告将FreeBSD 8.4和9.1列为潜在漏洞。由于缺少Heartbeat Extension(默认的FreeBSD openssl库的版本为0.9.x),因此不正确。

#8 楼

我发现几乎无法确定我使用的几种设备上正在使用的SSL版本。尽管从技术上讲,减轻干扰能够识别当前易受攻击的主机是我列表的顶部。

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

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

警告语

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

出现在这里的东西绝对是修复的重中之重,但这并不能使您摆脱应用更新和更改所有密钥的麻烦。

评论


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

–雅各布
2014年4月9日在0:58



#9 楼

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