截至目前,已发现OpenSSL中的一个错误会影响1.0.1
通过1.0.1f
(包括)和引起的版本1.0.2-beta
。
从Ubuntu 12.04开始,我们所有人都容易受到此bug的攻击。为了修补此漏洞,受影响的用户应更新为OpenSSL 1.0.1g
。
每个受影响的用户现在如何才能应用此更新?
截至目前,已发现OpenSSL中的一个错误会影响1.0.1
通过1.0.1f
(包括)和引起的版本1.0.2-beta
。
从Ubuntu 12.04开始,我们所有人都容易受到此bug的攻击。为了修补此漏洞,受影响的用户应更新为OpenSSL 1.0.1g
。
每个受影响的用户现在如何才能应用此更新?
Answers:
安全更新适用于12.04、12.10、13.10 和14.04,请参阅Ubuntu安全公告USN-2165-1。
因此,首先您需要应用可用的安全更新,例如通过运行
sudo apt-get update
sudo apt-get upgrade
从命令行。
不要忘记重启使用受影响的OpenSSL版本的服务(HTTP,SMTP等),否则您仍然容易受到攻击。另请参阅Heartbleed:这是什么,有哪些缓解方法?在Serverfault.com上。
以下命令显示(升级后)所有需要重新启动的服务:
sudo find /proc -maxdepth 2 -name maps -exec grep -HE '/libssl\.so.* \(deleted\)' {} \; | cut -d/ -f3 | sort -u | xargs --no-run-if-empty ps uwwp
之后,您需要重新生成所有服务器SSL密钥,然后评估您的密钥是否可能泄漏,在这种情况下,攻击者可能已从服务器中检索了机密信息。
openssl version
给出OpenSSL 1.0.1 14 Mar 2012
。那不是补丁版本,对吗?还是我看错了?
dpkg -l | grep ' openssl '
并获得,1.0.1-4ubuntu5.12
那么您就很好了。
该错误称为Heartbleed。
通常,如果您运行某些服务器在某个时候生成了SSL密钥,则您会受到影响。大多数最终用户没有(直接)受到影响;至少Firefox和Chrome不使用OpenSSL。SSH不受影响。Ubuntu软件包的分发不受影响(它依赖于GPG签名)。
如果运行任何使用OpenSSL版本1.0–1.0.1f的服务器(除了自发现错误以来已修补的课程版本),您就容易受到攻击。受影响的Ubuntu版本为11.10 oneiric到14.04可信预发行版。这是一个实现错误,而不是协议中的缺陷,因此只有使用OpenSSL库的程序才会受到影响。如果您有一个与旧版OpenSSL 0.9.x版本链接的程序,则不会受到影响。只有使用OpenSSL库来实现SSL协议的程序才会受到影响;使用OpenSSL进行其他操作的程序不受影响。
如果您运行的是暴露于Internet的易受攻击的服务器,则认为该服务器已受到威胁,除非自2014年4月7日发布以来您的日志未显示任何连接。(这假定该漏洞在发布前未被利用。)如果服务器仅在内部公开,则是否需要更改密钥取决于其他安全措施。
该错误使任何可以连接到您的SSL服务器的客户端都可以从该服务器检索大约64kB的内存。客户端不需要以任何方式进行身份验证。通过重复攻击,客户端可以连续尝试转储内存的不同部分。
攻击者可能能够检索的关键数据之一是服务器的SSL私钥。利用这些数据,攻击者可以模拟您的服务器。
使所有受影响的服务器脱机。只要它们在运行,它们就有可能泄漏关键数据。
升级libssl1.0.0
软件包,并确保重新启动所有受影响的服务器。
您可以使用grep'libssl检查受影响的进程是否仍在运行。(已删除)'/ proc / / maps`
生成新密钥。这是必需的,因为该错误可能使攻击者获得了旧的私钥。请遵循最初使用的相同步骤。
现在您有了新的密钥,可以使服务器恢复在线状态。
撤销旧证书。
损坏评估:服务于SSL连接的进程内存中的所有数据都可能已泄漏。这可以包括用户密码和其他机密数据。您需要评估这些数据可能是什么。
在少数情况下,客户端应用程序会受到影响。服务器端的问题是任何人都可以连接到服务器并利用该错误。为了利用客户端,必须满足三个条件:
wget
想下载文件,就不会有数据泄漏。)如果您在2014年4月4日晚上UTC到升级OpenSSL库之间进行了此操作,请考虑客户端进程内存中的所有数据都将受到威胁。
openssl
包含命令行工具。使用OpenSSL库来实现SSL协议的应用程序(例如Apache)不使用它。但是您应该只应用发行版的安全更新。
要查看在Ubuntu上安装了哪个OpenSSL版本,请运行:
dpkg -l | grep openssl
如果看到以下版本输出,则应包括CVE-2014-0160的补丁。
ii openssl 1.0.1-4ubuntu5.12 Secure Socket Layer (SSL)...
查看https://launchpad.net/ubuntu/+source/openssl/1.0.1-4ubuntu5.12,它显示出已修复的错误类型:
...
SECURITY UPDATE: memory disclosure in TLS heartbeat extension
- debian/patches/CVE-2014-0160.patch: use correct lengths in
ssl/d1_both.c, ssl/t1_lib.c.
- CVE-2014-0160
-- Marc Deslauriers <email address hidden> Mon, 07 Apr 2014 15:45:14 -0400
...
sudo service apache2 restart
openssl
不会修复诸如Apache,Nginx或postfix之类的应用程序。您必须libssl1.0.0
按照其他帖子中的说明更新并重新启动它们。
如果您的apt-get存储库不包含任何预编译的1.0.1g OpenSSL版本,那么只需从官方网站下载源代码并进行编译即可。
curl https://www.openssl.org/source/openssl-1.0.1g.tar.gz | tar xz && cd openssl-1.0.1g && sudo ./config && sudo make && sudo make install
sudo ln -sf /usr/local/ssl/bin/openssl `which openssl`
# openssl version should return
openssl version
OpenSSL 1.0.1g 7 Apr 2014
cf此博客文章。
注意:如博客文章所述,此解决方法无法解决“必须使用1.0.1g openSSL源重新编译的Nginx和Apache服务器”。
对于那些不想进行服务器级软件包升级的用户。我今天读了一堆这些指南,并且apt-get upgrade openssl
=== apt-get upgrade
这将应用您的计算机所需的所有安全修复程序。很好,除非您明确地在某个地方使用了旧的软件包版本。
这是在运行Apache 2的Ubuntu 12.04 LTS上所需的最少操作。
转到此地址并证明您有漏洞。您应该使用Web服务器的直接外部地址。如果使用负载均衡器(例如ELB),则可能不会直接与Web服务器联系。
运行以下1个衬板以升级软件包并重新启动。是的,我看到所有指南都说您应该在2014年4月4日之后加上时间戳记,但在我看来情况并非如此。
apt-get更新&& apt-get安装openssl libssl1.0.0 && /etc/init.d/apache2重新启动
确保已安装适当的软件包版本,然后再次检查Web服务器中的漏洞。
关键软件包如下所示,我使用下面的命令确定了这些信息,然后删除了所有内容(您不需要了解我的计算机的状态)。
$ dpkg -l | grep ssl
ii libssl-dev 1.0.1-4ubuntu5.12 SSL development libraries, header files and documentation
ii libssl1.0.0 1.0.1-4ubuntu5.12 SSL shared libraries
ii openssl 1.0.1-4ubuntu5.12 Secure Socket Layer (SSL)* binary and related cryptographic tools
1.0.1-4ubuntu5.12
不应包含该漏洞。通过再次访问下面的网站并测试您的Web服务器,确保是这种情况。
apt-get install openssl libssl1.0.0
为我做了。openssl version -a
现在运行显示:built on: Mon Apr 7 20:33:29 UTC 2014
我注意到这里有许多评论者迫切需要帮助。他们遵循说明,升级,重新引导,并且在使用某些测试网站时仍然容易受到攻击。
您必须检查以确保没有保留的软件包(例如libssl)。
:~$ sudo apt-get upgrade -V
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages have been kept back:
libssl-dev (1.0.1-4ubuntu5.10 => 1.0.1-4ubuntu5.12)
libssl1.0.0 (1.0.1-4ubuntu5.10 => 1.0.1-4ubuntu5.12)
linux-image-virtual (3.2.0.31.34 => 3.2.0.60.71)
linux-virtual (3.2.0.31.34 => 3.2.0.60.71)
0 upgraded, 0 newly installed, 0 to remove and 4 not upgraded.
升级那些apt-mark unhold libssl1.0.0
(例如)。然后升级:apt-get upgrade -V
。然后,重新启动受影响的服务。