这是有关了解和修复Heartbleed安全问题的规范问题。
CVE-2014-0160又称为“ Heartbleed”是什么?原因是什么,哪些操作系统和OpenSSL版本容易受到攻击,症状是什么,是否有任何方法可以检测到成功的利用?
如何检查我的系统是否受到影响?如何缓解此漏洞?我是否应该担心自己的密钥或其他私人数据遭到破坏?我还要关注其他哪些副作用?
这是有关了解和修复Heartbleed安全问题的规范问题。
CVE-2014-0160又称为“ Heartbleed”是什么?原因是什么,哪些操作系统和OpenSSL版本容易受到攻击,症状是什么,是否有任何方法可以检测到成功的利用?
如何检查我的系统是否受到影响?如何缓解此漏洞?我是否应该担心自己的密钥或其他私人数据遭到破坏?我还要关注其他哪些副作用?
Answers:
首先,在吓跑之前,请确保您了解此漏洞是否确实适用于您。如果您有一台服务器,但实际上从未使用过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?彭博社报道说,NSA在漏洞引入后不久就为该漏洞利用了武器。参见国家安全局说多年来利用令人流血的Bug谋取情报。但是,美国情报界否认了彭博社的说法。请参阅记录中的IC。
如何检查我的系统是否受到影响?
如果您要在系统上维护OpenSSL,则只需发出以下命令openssl version
:
$ openssl version
OpenSSL 1.0.1g 7 Apr 2014
如果分配是维持OpenSSL的,那么你可能无法确定OpenSSL版本由于使用背打补丁openssl
命令或包信息(例如apt-get
,dpkg
,yum
或rpm
)。大多数(所有?)发行版使用的反向修补过程仅使用基本版本号(例如,“ 1.0.1e”);和不不包括有效的安全版本(例如,“1.0.1g”)。
超级用户方面存在一个悬而未决的问题,用于在对软件包进行反修补时确定OpenSSL和其他软件包的有效安全版本。不幸的是,没有有用的答案(除了查看发行版的网站)。遇到反向修补程序时,请参阅确定有效的安全版本。
根据经验:如果您曾经安装过一个受影响的版本,并且曾经运行过与OpenSSL链接以获得TLS支持的程序或服务,那么您就很容易受到攻击。
在哪里可以找到测试该漏洞的程序?
在Heartbleed宣布的几小时内,互联网上的几个人公开发布了可公开访问的Web应用程序,这些应用程序可以用来检查服务器是否存在此漏洞。在撰写本文时,我尚未进行任何审查,因此我不会进一步公开他们的申请。借助您首选的搜索引擎,可以相对容易地找到它们。
如何缓解此漏洞?
升级到非漏洞版本并重置或重新保护易受攻击的数据。如Heartbleed网站上所述,适当的响应步骤大致如下:
有关更详细的分析和答案,请参阅网站运营商应如何处理Heartbleed OpenSSL漏洞?在安全堆栈交换上。
我是否应该担心自己的密钥或其他私人数据遭到破坏?我还应该关注其他哪些副作用?
绝对。系统管理员需要假设使用易受攻击的OpenSSL版本的服务器确实受到了威胁,并做出了相应的响应。
漏洞披露后不久,Cloudfare提出了一项挑战,以查看是否可以在实践中恢复服务器的私钥。挑战由Fedor Indutny和Ilkka Mattila独立赢得。请参阅“流血的挑战”。
在哪里可以找到更多信息?
链接转储,适用于那些寻求更多详细信息的人:
可以在Heartbleed披露时间表中找到披露事件的相当详细的时间表:谁知道何时何地。
如果您是一名程序员,并且对各种编程技巧感兴趣,例如通过OpenSSL的msg_cb
回调检测Heartbleed攻击,请参阅OpenSSL的安全通报2014047。
Ubuntu发布了USN-2165-1,其中指出更新的软件包现在可以在档案中找到。运行以下两个命令以获取此修复程序。
sudo apt-get update
sudo apt-get upgrade
我已经将包含新版本(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)而不是仅使用存档中的修补版本。
这是LTS版本,仍支持服务器版本,并接收安全更新。但是令人讨厌的漏洞并未影响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接收到令人讨厌的补丁。
对于所有其他过时的ubuntu版本,这意味着基本上必须重新安装。
本质上,运行openssl version -a
并确保构建日期是2014年4月7日或更晚,但请在此处查看更多信息。
确保重新启动依赖于OpenSSL的所有服务的最佳方法是重新启动。
Mon Apr 7 20:31:55 UTC 2014
)之后进行了编译。
这些是脆弱的。 RedHat的勘误表RHSA-2014-0376说,有可用的修补程序库,任何受影响的人都应尽早升级。
在撰写本文时,CentOS尚无固定版本,但Karanbir Singh在CentOS公告中的帖子说,他们已经生产了opensl的更新版本(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
。
这些都不是脆弱的。根据Red Hat的此咨询,
此问题不会影响Red Hat Enterprise Linux 5和Red Hat Enterprise Linux 6.4及更早版本附带的openssl版本。
Karanbir Singh在CentOS公告中的发布同样清楚地说明了版本控制:
今天早些时候,我们意识到CentOS-6.5中附带的openssl中存在严重问题
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
wheezy/security
则可以使用apt-get update && apt-get upgrade
。或者,使用一个交互式的软件包管理器只更新包openssl
,libssl1.0.0
,libssl1.0.0-dbg
和libssl-dev
(你的系统上如安装)。
OpenSSL 1.0.1e 11 Feb 2013
因为该修补程序称为1.0.1e-2。您可以检查dpkg -l openssl
并显示版本1.0.1e-2+deb7u6
在FreeBSD的安全团队已经发布了关于咨询CVE-2014-0160(又名“心脏出血漏洞”)和:是FreeBSD-SA-14:06.openssl
更新FreeBSD
通过二进制补丁更新FreeBSD
可以通过freebsd-update(8)实用程序更新在i386或amd64平台上运行FreeBSD 的RELEASE版本的系统:
# 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更一般的答案)。
这些系统是不容易的心脏出血漏洞默认情况下的问题,因为依靠旧0.9.x版本版本的OpenSSL库,除非你安装OpenSSL的 从端口(见楼上)。
如果这些系统不容易受到Heartbleed问题的影响,则明智的选择是,由于另一个本地漏洞,应尽快升级系统(请参见楼上的FreeBSD-SA-14:06.openssl和“ FreeBSD 10.0”部分):
本地攻击者可能能够窥探签名过程,并可能从中恢复签名密钥。[CVE-2014-0076]
注意事项:
最初的Heartbleed公告将FreeBSD 8.4和9.1列为潜在漏洞。由于缺少心跳扩展(默认的FreeBSD openssl库的版本为0.9.x),这不是正确的。
我发现几乎无法确定我使用的几种设备上正在使用的SSL版本。尽管从技术上讲,缓解不了能够识别当前易受攻击的主机的能力还是我的榜首。
我组装了一个小型VM,它将使用FiloSottile的测试模块对任意主机和端口进行检查。乍看之下,代码看起来不错。
完成的VM的发布在这里。它是VMX格式。
警告语
该脚本和VM将仅显示系统的当前状态。在过去的某个时刻,您的系统很可能处于脆弱状态,并且可能已经被滥用。
此处显示的某些内容绝对是修复的当务之急,但是它并没有使您摆脱应用更新和更改所有键的麻烦。
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