这是一个典型问题关于理解和修复 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-get
、dpkg
或)进行反向修补。大多数(所有?)发行版使用的反向修补过程仅使用基本版本号(例如,“1.0.1e”);并且yum
rpm
不是包括一个有效安全版本(例如“1.0.1g”)。
Super User 上有一个未解决的问题,用于确定当软件包打补丁时 OpenSSL 和其他软件包的有效安全版本。不幸的是,没有有用的答案(除了查看发行版的网站)。请参阅确定反向补丁时的有效安全版本?。
根据经验法则:如果您曾经安装过受影响的版本之一,并且曾经运行过链接 OpenSSL 以获取 TLS 支持的程序或服务,那么您就很容易受到攻击。
哪里可以找到测试漏洞的程序?
在 Heartbleed 公布后的几个小时内,互联网上有几个人公布了可公开访问的 Web 应用程序,据说这些应用程序可用于检查服务器是否存在此漏洞。截至撰写本文时,我尚未审查任何应用程序,因此我不会进一步公布他们的应用程序。借助您喜欢的搜索引擎,您可以相对轻松地找到它们。
如何缓解此漏洞?
升级到无漏洞版本并重置或重新保护易受攻击的数据。如心脏出血站点,适当的响应步骤大致如下:
- 修补易受攻击的系统。
- 重新生成新的私钥。
- 向您的 CA 提交新的 CSR。
- 获取并安装新的签名证书。
- 使会话密钥和 cookie 无效
- 重置密码和共享秘密
- 撤销旧证书。
更详细的分析和解答,请参见网站运营商应该如何应对 Heartbleed OpenSSL 漏洞?在安全 Stack Exchange 上。
我是否应该担心我的密钥或其他私人数据已被泄露?我还应该担心哪些其他副作用?
当然。系统管理员需要认为他们的使用易受攻击的 OpenSSL 版本的服务器确实受到了攻击,并做出了相应的响应。
漏洞披露后不久,Cloudfare 发起了一项挑战,看看能否在实践中恢复服务器的私钥。Fedor Indutny 和 Ilkka Mattila 分别赢得了这项挑战。参见心脏滴血挑战。
在哪里可以找到更多信息?
链接转储,供那些寻找更多详细信息的人使用:
披露事件的详细时间表可参见Heartbleed 披露时间表:谁知道什么以及何时知道。
如果你是一名程序员,并且对各种编程技巧感兴趣,比如通过 OpenSSL 的回调检测 Heartbleed 攻击msg_cb
,那么请参阅 OpenSSL 的安全公告 2014047。
答案2
答案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