CVE-2014-0160 a.k.a. Heartbleed是OpenSSL中的一个漏洞。看起来很恐怖。

如何确定我是否受到影响?

如果我受到影响,我该怎么办?显然升级还不够。

评论

他们似乎不做狗食。

不,看起来并不可怕。裤子看起来令人恐惧。

#1 楼

此漏洞具有很高的潜在影响,因为如果您的系统受到攻击,即使进行了修补,它仍将很容易受到攻击,并且攻击可能不会在日志中留下任何痕迹。很有可能,如果您快速打补丁并且您不是一个备受瞩目的目标,那么没人会来攻击您,但这很难确定。

我容易受到攻击吗?

有问题的OpenSSL版本

有问题的软件是OpenSSL库1.0.1到1.0.1f,以及OpenSSL 1.0.2到beta1。较早的版本(0.9.x,1.0.0)和已修复该错误的版本(1.0.1g起,1.0.2 beta 2起)不受影响。这是一个实现错误,不是协议中的缺陷,因此仅会影响使用OpenSSL库的程序。

您可以使用命令行工具openssl version -a显示OpenSSL版本号。请注意,某些发行版将错误修复移植到了较早的版本中。如果您的软件包的更改日志中提到了Heartbleed错误修复程序,那很好,即使您看到的是1.0.1f之类的版本。如果openssl version -a在UTC傍晚或更晚提到构建日期(不是第一行的日期)为2014-04-07,则应该没问题。请注意,即使版本为1.0.1,OpenSSL软件包的名称中也可能带有1.0.01.0.0表示二进制兼容性)。

受影响的应用程序

利用使用OpenSSL库实现SSL连接的应用程序。许多应用程序都将OpenSSL用于其他加密服务,这很好:该错误在于SSL协议的特定功能“心跳”的实现。针对您系统上的库。在使用dpkg和apt(Debian,Ubuntu,Mint等)的系统上,以下命令列出了已安装的软件包,而不是使用libssl1.0.0的库(受影响的软件包): />如果您运行此列表中的某些服务器软件并侦听SSL连接,则可能会受到影响。这涉及Web服务器,电子邮件服务器,VPN服务器等。您将知道已启用SSL,因为您必须生成证书,方法是将证书签名请求提交给证书颁发机构,或者进行自己的自我签名证书。 (有可能某些安装过程在未引起您注意的情况下生成了自签名证书,但是通常只对内部服务器执行此操作,而对暴露于Internet的服务器则不做。)如果您运行了暴露于Internet的易受攻击的服务器,则认为它已被破坏除非自2014年4月7日宣布以来,您的日志未显示任何连接。 (这假定该漏洞在发布之前未被利用。)如果服务器仅在内部公开,则是否需要更改密钥取决于其他安全措施。

客户端仅当您使用该软件连接到恶意服务器时,该软件才会受到影响。因此,如果您使用IMAPS连接到电子邮件提供商,则无需担心(除非提供商受到攻击-否则,他们应该通知您),但是,如果您使用脆弱的浏览器浏览了随机网站,担心。到目前为止,似乎该漏洞尚未被利用,因此您只需要担心是否从2014-04-08开始连接到恶意服务器。

以下程序不受影响,因为他们不使用OpenSSL来实现SSL:


SSH(协议不是SSL)
Chrome / Chromium(使用NSS)
Firefox(使用NSS) (至少在Ubuntu 12.04上使用Firefox 27,但不是所有版本都使用?

有什么影响?

该错误使所有可以连接到您的SSL服务器的客户端一次都能从该服务器检索到大约64kB的内存。客户端不需要以任何方式进行身份验证。通过重复攻击,客户端可以连续尝试转储内存的不同部分。这可能使攻击者可以检索服务器进程内存中的任何数据,包括密钥,密码,cookie等。要检索的是服务器的SSL私钥。利用此数据,攻击者可以假冒您的服务器。

该错误还允许SSL客户端连接到的任何服务器一次从客户端检索大约64kB的内存。如果您使用易受攻击的客户端来处理敏感数据,然后又使用同一客户端将其连接到不受信任的服务器,则这将令人担心。因此,与服务器端相比,这方面的攻击可能性要小得多。

如何解决此漏洞?

修复暴露的服务器


使所有受影响的服务器脱机。只要它们在运行,它们就有可能泄漏关键数据。
升级OpenSSL库软件包。到现在为止,所有发行版都应该有修复程序(可以使用1.0.1g修复程序,也可以使用补丁程序修复该错误而不更改版本号)。如果从源代码编译,请升级到1.0.1g或更高版本。确保所有受影响的服务器都重新启动。
在Linux上,您可以使用grep 'libssl.*(deleted)' /proc/*/maps

检查是否仍在运行潜在受影响的进程。这是必要的,因为该错误可能使攻击者获得了旧的私钥。请遵循最初使用的相同步骤。


如果您使用由证书颁发机构签名的证书,则将新的公共密钥提交给您的CA。收到新证书后,将其安装在服务器上。
如果使用自签名证书,则将其安装在服务器上。
两种方法都将旧密钥和证书移开(但不要删除它们,只要确保它们不再被使用就可以了。吊销旧证书。

损坏评估:服务于SSL连接的进程的内存中的任何数据都可能被泄漏。这可以包括用户密码和其他机密数据。您需要评估这些数据可能是什么。


如果正在运行的服务允许进行密码身份验证,则应该认为自从在漏洞宣布不久之前就已连接的用户的密码已受到威胁。检查您的日志并更改任何受影响用户的密码。
还使所有会话cookie无效,因为它们可能已被破坏。
客户端证书未被破坏。

如果此漏洞仅存在于服务器的内存中,则可能已经泄漏给攻击者。
如果有人记录了旧的SSL连接并检索了服务器的密钥,则他们现在可以解密其笔录。 (除非确保了PFS-如果您不知道,那就不是。)



在其他情况下的补救措施
仅当不受信任的用户可以连接到本地主机或Intranet上的侦听时,该漏洞才被视为公开。您使用相同的客户端进程


处理机密数据(例如密码,客户端证书等);
然后,以相同的过程通过SSL连接到恶意服务器。不是恶意服务器)。不必担心运行wget下载文件(不会泄漏任何机密数据)。

如果您是在2014年4月7日晚上UTC和升级OpenSSL库之间执行此操作,请考虑其中的任何数据客户的记忆将受到损害。

参考文献



(由两个独立发现该错误的团队之一) /> OpenSSL TLS心跳(Heartbleed)漏洞利用的工作原理是什么?
Heartbleed意味着每个SSL服务器都有新证书吗?

评论


“通常,如果您运行某些服务器在某个时候生成SSL密钥,则会受到影响。”可能会误导。要强调的是,如果您在一台服务器上生成密钥,然后在另一台服务器上使用它,则如果使用该密钥的服务器运行易受攻击的OpenSSL版本,则会遇到麻烦。

–马特·诺德霍夫(Matt Nordhoff)
14年4月8日在13:01

客户证书也受到IIRC的影响

– Elazar Leibovich
2014年4月8日13:40

@ElazarLeibovich不是专门针对客户端证书的(实际上,客户端证书不太可能被此bug泄漏),而是如果客户端使用易受攻击的库版本的客户端使用支持服务器启动的心跳的协议连接到恶意服务器,则客户端内存中的任何数据。我问了专家这个问题,还没有一个明确的答案。

–吉尔斯'所以-不再是邪恶的'
2014年4月8日13:43

我认为Firefox确实使用OpenSSL。如果我运行lsof -c firefox | grep'ssl \ | crypto',我得到了/usr/lib64/libssl.so.1.0.0、/usr/lib64/libcrypto.so.1.0.0、/lib64/libk5crypto.so.3.1和/ opt / firefox /libssl3.so。

–user64707
2014年4月8日17:50



@ B4NZ41只需执行安全升级。咨询已经结束了20多个小时。

–吉尔斯'所以-不再是邪恶的'
14年4月8日在22:28

#2 楼

要测试您是否容易受到攻击,请访问:http://filippo.io/Heartbleed/

如果发现您容易受到攻击,请更新openssl并重新启动Web服务器。

评论


正如Gilles在回答中提到的那样,仅更新和重新启动是不够的。您需要对私钥的潜在危害做出回应-最基本的要求是撤消那些密钥,但是您还需要处理可能已被使用该密钥危害的信息。例如会话ID。

– strugee
2014年4月12日在1:55

#3 楼

无法从此错误中恢复。保存所有日志,如果有人在宣布漏洞之前确实意识到该漏洞确实存在,将需要使用这些日志。