Jac*_*cob 203 security openssl heartbleed
这是一个关于理解和修复 Heartbleed 安全问题的规范问题。
CVE-2014-0160 又名“心血”究竟是什么?原因是什么,OpenSSL 的哪些操作系统和版本容易受到攻击,症状是什么,有什么方法可以检测成功的漏洞利用吗?
如何检查我的系统是否受到影响?如何缓解此漏洞?我是否应该担心我的密钥或其他私人数据已被泄露?我应该担心哪些其他副作用?
EEA*_*EAA 116
首先,在吓坏之前,请确保您了解此漏洞是否真的适用于您。如果您有一台服务器,但实际上从未有任何使用 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 开发代码的人表示这是无意的。See Man 介绍了严重的“Heartbleed”安全漏洞,否认他是故意插入的。
哪些操作系统和 OpenSSL 版本容易受到攻击?
如上所述,任何正在使用的操作系统或链接到 OpenSSL 1.0.1 到 1.0.1f 的应用程序。
有什么症状,有什么方法可以检测成功的漏洞利用?
这是可怕的部分。据我们所知,没有已知的方法可以检测此漏洞是否已被利用。从理论上讲,IDS 签名很快就会发布,可以检测到此漏洞,但在撰写本文时,这些签名尚不可用。
有证据表明,早在 2013 年 11 月,Heartbleed 就已在野外被积极利用。请参阅 EFF 的《内心狂野:情报机构是否在 2013 年 11 月使用 Heartbleed?彭博社报道说,在漏洞被引入后不久,美国国家安全局就将漏洞利用武器化了。参见NSA 多年来一直在利用 Heartbleed Bug 获取情报。然而,美国情报界否认布隆伯格的说法。参见IC 上的记录。
如何检查我的系统是否受到影响?
如果您在系统上维护 OpenSSL,那么您可以简单地发出openssl version:
$ openssl version
OpenSSL 1.0.1g 7 Apr 2014
Run Code Online (Sandbox Code Playgroud)
如果发行版正在维护 OpenSSL,那么您可能无法确定 OpenSSL 的版本,因为使用openssl命令或包信息(例如apt-get,dpkg、yum或rpm)进行了回补丁。大多数(所有?)发行版使用的回补丁过程仅使用基本版本号(例如,“1.0.1e”);和不不包括有效的安全版本(例如,“1.0.1g”)。
超级用户上有一个悬而未决的问题,以确定当包被反向修补时 OpenSSL 和其他包的有效安全版本。不幸的是,没有有用的答案(除了查看发行版的网站)。请参阅在遇到 Backpatching 时确定有效的安全版本?。
根据经验:如果您曾经安装过其中一个受影响的版本,并且曾经运行过与 OpenSSL 链接以获得 TLS 支持的程序或服务,那么您很容易受到攻击。
在哪里可以找到测试漏洞的程序?
在 Heartbleed 公告发布数小时内,互联网上的几个人就公开了可公开访问的 Web 应用程序,据称这些应用程序可用于检查服务器是否存在此漏洞。在撰写本文时,我还没有审查过任何申请,因此我不会进一步宣传他们的申请。在您首选的搜索引擎的帮助下,可以相对轻松地找到它们。
如何缓解此漏洞?
升级到非易受攻击的版本并重置或重新保护易受攻击的数据。正如Heartbleed网站上所述,适当的响应步骤大致包括:
有关更详细的分析和答案,请参阅网站运营商应如何处理 Heartbleed OpenSSL 漏洞?在安全堆栈交换。
我是否应该担心我的密钥或其他私人数据已被泄露?我应该担心哪些其他副作用?
绝对地。系统管理员需要假设他们使用易受攻击的 OpenSSL 版本的服务器确实受到了威胁并做出相应的响应。
在漏洞被披露后不久,Cloudfare 提出了一个挑战,看看服务器的私钥是否可以在实践中恢复。Fedor Indutny 和 Ilkka Mattila 分别赢得了挑战。请参阅Heartbleed 挑战。
我在哪里可以找到更多信息?
链接转储,对于那些寻找更多细节的人:
可以在Heartbleed 披露时间表中找到披露事件的相当详细的时间表:谁知道什么以及何时。
如果您是一名程序员并且对各种编程技巧(例如通过 OpenSSL 的msg_cb回调检测 Heartbleed 攻击)感兴趣,请参阅 OpenSSL 的安全公告 2014047。
Nat*_*man 36
Ubuntu 已发布USN-2165-1,其中声明更新的软件包现在可以在档案中使用。运行以下两个命令来获取修复。
sudo apt-get update
sudo apt-get upgrade
Run Code Online (Sandbox Code Playgroud)
我已将包含新版本 (1.0.1g) 的 Debian 软件包上传到我为此目的设置的 PPA。这三个命令会将我的 PPA 添加到您的系统,更新可用软件包列表,并升级所有内容:
sudo add-apt-repository ppa:george-edison55/openssl-heartbleed-fix
sudo apt-get update
sudo apt-get upgrade
Run Code Online (Sandbox Code Playgroud)
注意:PPA 还提供了适用于 Ubuntu 12.04 和 13.10 的软件包,以防万一您更喜欢实际运行新版本 (1.0.1g) 而不是仅使用存档中的修补版本。
这是一个 LTS 版本,服务器版本仍受支持并接收安全更新。但是heartbleed漏洞并没有影响ubuntu 10.04标准安装的openssl包,因为版本低于1.0.1。
桌面版本已达到使用寿命,需要升级/重新安装。
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 的所有服务的最佳方法是重新启动。
Mad*_*ter 14
这些都是脆弱的。 RedHat 的勘误 RHSA-2014-0376说有可用的修补库,任何受影响的人都应该尽早升级。
在撰写本文时,CentOS 还没有固定版本,但Karanbir Singh 在 CentOS-announce 上的帖子说他们已经制作了openssl-1.0.1e-16.el6_5.4.0.1具有可利用的 TLS的 openssl 的更新版本(请注意最后四位数字很重要)命令禁用,并且可以安全地应用它,因为它最终发布时将被固定版本覆盖。
暂时固定的版本似乎还没有出现在所有的镜像上,但它位于http://mirror.centos.org/centos/6/updates/x86_64/Packages/的主存储库中(对于i686)。
编辑:正如 Iain 所说,现在似乎有一个针对 C6.5 的完整补丁版本,而且它似乎已经被匆匆忙忙地推到了镜子里。yum update我的服务器直接得到了它;它是openssl-1.0.1e-16.el6_5.7。
这些都不是脆弱的。根据Red Hat 的这个建议,
此问题不会影响 Red Hat Enterprise Linux 5 和 Red Hat Enterprise Linux 6.4 及更早版本附带的 openssl 版本。
Karanbir Singh 在 CentOS-announce 上的帖子对版本控制同样清楚:
今天早些时候,我们了解到 CentOS-6.5 中的 openssl 存在严重问题
jac*_*age 13
Debian 已经发布了DSA-2896-1并且可以在此处获得修补库。此处提供了一个 shell 脚本。
1.补丁
Apt-get 存储库已更新,因此现在可以通过以下方式获得修补库 apt-get update && apt-get upgrade
apt-get upgrade libssl1.0.0 openssl
Run Code Online (Sandbox Code Playgroud)
或者(不推荐)可以手动升级软件包:
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
在FreeBSD的安全团队已经发布了关于咨询CVE-2014-0160(又名“心脏出血漏洞”)和:是FreeBSD-SA-14:06.openssl
更新 FreeBSD
通过二进制补丁更新 FreeBSD
在i386或amd64 平台上运行FreeBSD的RELEASE 版本的系统可以通过 freebsd-update(8) 实用程序更新:
# freebsd-update fetch
# freebsd-update install
Run Code Online (Sandbox Code Playgroud)从源代码更新 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
Run Code Online (Sandbox Code Playgroud)以 root 身份执行以下命令:
# cd /usr/src
# patch < /path/to/patch
Run Code Online (Sandbox Code Playgroud)重新编译操作系统
使用在FreeBSD 手册中描述的buildworld和installworld。
使用最低版本1.0.1_10更新openssl端口
使用库重启所有守护进程,或者重启系统
假装您的系统已被入侵,重新发布所有 ssl 密钥和/或证书以及可能泄露的信息(请参阅EEAA更一般的答案)。
这些系统是不容易的心脏出血漏洞默认情况下的问题,因为依靠旧0.9.x版本版本的OpenSSL库,除非你安装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 版),情况并非如此。
我想指出,私钥并不是唯一应该被视为受到威胁的资产。该错误有可能泄漏在与 OpenSSL 相同的地址空间(即相同的进程)中运行的任何内存。因此,如果您正在运行一个服务器进程,其中 OpenSSL 的易受攻击版本是静态或动态链接的,则该进程曾经处理过的任何信息,包括密码、信用卡号和其他个人数据,都应被视为可能受到损害。