Heartbleed:这是什么,有什么select来缓解呢?

这是一个关于理解和纠正Heartbleed安全问题的典型问题。

CVE-2014-0160又是什么“Heartbleed”? 什么原因,什么操作系统和版本的OpenSSL脆弱,有什么症状,有什么方法来检测成功的利用?

如何检查我的系统是否受到影响? 如何减轻这个漏洞? 我应该担心我的密钥或其他私人数据已被泄露? 我应该关注什么其他副作用?

    首先 ,在吓跑之前,请确保您了解这个漏洞是否适用于您。 如果你有一个服务器,但实际上从来没有使用过TLS的应用程序,那么这对你来说不是一个高优先级的事情。 另一方面,如果您曾经使用过支持 TLS的应用程序,那么您可以享受一段美好的享受。 阅读:

    什么是CVE-2014-0160又名“Heartbleed”?

    这是一个很大的混乱,就是这样。 简而言之,OpenSSL版本1.0.1至1.0.1f中发现了一个可远程利用的漏洞,攻击者可以通过该漏洞读取系统内存的某些部分。 这些部分是保存敏感数据的部分,如私钥,预共享密钥,密码和高价值的公司数据等等。

    这个错误是由Google Security(2014年3月21日)和芬兰IT安全testing公司Codenomicon(2014年4月2日)的Neel Mehta独立发现的。

    原因是什么?

    那么,在OpenSSL错误的代码。 以下是引入此漏洞的提交, 这里是修复漏洞的提交。 该bug在2011年12月出现,并于2014年4月7日进行了修补。

    该错误也可以被看作是一个更大的问题的症状。 这两个相关的问题是:(1)确保错误代码没有引入代码库的过程是什么;(2)协议和扩展为什么如此复杂和难以testing。 项目(1)是OpenSSL和许多其他项目的治理和stream程问题。 许多开发人员只是简单地抵制代码审查,分析和扫描等实践。 (2)正在IETF的TLS工作组讨论。 请参阅Heartbleed /协议复杂性 。

    恶意代码是否被恶意插入?

    我不会推测这是否是一个错误,或者可能是代表一个坏angular色溜进来的代码。 但是,开发OpenSSL代码的人却说这是无意的。 看到介绍严重的“Heartbleed”安全漏洞的Man否认他故意插入了它 。

    哪些操作系统和OpenSSL版本容易受到攻击?

    如上所述,任何正在使用的操作系统或与OpenSSL 1.0.1到1.0.1f链接的应用程序。

    有什么症状,是否有任何方法来检测成功的利用?

    这是可怕的部分。 据我们所知,没有已知的方法来检测这个漏洞是否被利用。 从理论上讲,IDS签名很快就会被发布,可以检测到这个漏洞,但在撰写本文时,这些签名是不可用的。

    有证据显示,Heartbleed早在2013年11月就已经在野外被积极开发了。查看EFF的“ 狂野之心:2013年11月智力机构是否使用Heartbleed? 彭博社报道说,国家安全局在引入漏洞后不久就把这个漏洞武器化了。 见NSA说,利用多年的智力Heartbleed错误 。 不过,美国情报界否认彭博的要求。 请参阅logging上的IC 。

    如何检查我的系统是否受到影响?

    如果您在系统上维护OpenSSL,那么您可以简单地发出openssl version

     $ openssl version OpenSSL 1.0.1g 7 Apr 2014 

    如果发行版保持OpenSSL,那么由于使用openssl命令或者软件包信息(例如, apt-getdpkgyumrpm )进行反向修补,您可能无法确定OpenSSL的版本。 大多数(所有?)发行版使用的后向修补过程仅使用基本版本号(例如“1.0.1e”); 包含有效的安全版本 (例如“1.0.1g”)。

    超级用户有一个开放的问题来确定在重新打包软件包时OpenSSL和其他软件包的有效安全版本。 不幸的是,没有有用的答案(除了检查发行版的网站)。 遇到Backpatching时,请参阅确定有效的安全版本 。

    作为一个经验法则:如果您曾经安装过某个受影响的版本,并且曾经运行过针对OpenSSL进行TLS支持的程序或服务,那么您就容易受到攻击。

    我在哪里可以find一个程序来testing漏洞?

    在Heartbleed宣布的几个小时内,互联网上的几个人已经公开了可公开访问的Web应用程序,这些Web应用程序可能被用来检查服务器是否存在此漏洞。 截至撰写本文时,我还没有审查任何内容,所以我不会进一步宣传他们的申请。 他们可以相对容易地find您的首选search引擎的帮助。

    这个漏洞是如何缓解的?

    升级到非易受攻击的版本,并重置或重新保护易受攻击的数据。 如Heartbleed网站所述,适当的响应步骤大致如下:

    1. 修补程序容易受到攻击
    2. 重新生成新的私钥。
    3. 提交新的CSR到您的CA.
    4. 获取并安装新的签名证书。
    5. 使会话密钥和Cookie无效
    6. 重置密码和共享密码
    7. 撤销旧的证书。

    有关更详细的分析和答案,请参阅网站运营商应该对Heartbleed OpenSSL漏洞利用做些什么? 在安全堆栈交换。

    我应该担心我的密钥或其他私人数据已被泄露? 我应该关注什么其他副作用?

    绝对。 系统pipe理员需要假设他们使用易受攻击的OpenSSL版本的服务器确实受到威胁,并做出相应的响应。

    漏洞被披露后不久,Cloudfare提供了一个挑战,看看服务器的私钥是否可以在实践中恢复。 Fedor Indutny和Ilkka Mattila独立赢得了挑战。 看到Heartbleed挑战 。

    我在哪里可以find更多信息?

    链接转储,为那些寻找更多的细节:

    • OpenSSL SECADV 2014047
    • CVE-2014-0160
    • 心脏出血漏洞
    • Ubuntu宣布
    • RHEL公告
    • 官方的OpenSSL公告

    披露事件的详细时间表可以在Heartbleed披露时间表中find:谁知道什么时间和什么时候 。


    如果您是程序员,并对各种编程技巧感兴趣,比如通过OpenSSL的msg_cbcallback检测Heartbleed攻击,请参阅OpenSSL 安全通报2014047 。

    XKCD简单的解释了错误:

    XKCD 1354

    Ubuntu 12.04,12.10和13.10

    Ubuntu已经发布了USN-2165-1 ,它指出现在可以在档案中find更新的软件包。 运行以下两个命令来获取修复程序。

     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版本,服务器版本仍然受支持并接收安全更新。 但是这个心跳加速的漏洞并没有影响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接收到心跳补丁。

    对于所有其他过时的Ubuntu版本,这意味着基本上全新的安装是必要的。

    validation是否应用了该修补程序

    本质上,运行openssl version -a ,并确保生成date是2014年4月7日或更晚,但在这里看到更多。

    重启

    确保所有依赖于OpenSSL的服务重新启动的最好方法是重新启动 。

    RedHat 6.5和CentOS 6.5

    这些是脆弱的。 RedHat的错误RHSA-2014-0376说有可用的补丁库,受影响的人应尽早升级。

    在编写本文的时候,CentOS还没有固定的版本,但是Karanbir Singh在CentOS-announce上的贴子说他们已经生成了openssl的更新版本( openssl-1.0.1e-16.el6_5.4.0.1 ,note最后四位是重要的),它具有可利用的TLS命令被禁用,并且可以安全地应用,因为它在最终被释放时将被固定版本覆盖。

    暂时固定的版本似乎还没有把它放到所有的镜像上,但在http://mirror.centos.org/centos/6/updates/x86_64/Packages/的主要存储库中i686的)。

    编辑 :正如伊恩所说,现在似乎是一个C6.5的完全修补版本,它似乎被匆匆推到镜子周围。 一个yum update了我的服务器; 它是openssl-1.0.1e-16.el6_5.7

    6.5之前版本的RH6和C6

    这些不是脆弱的。 根据红帽的这个build议 ,

    这个问题不会影响Red Hat Enterprise Linux 5和Red Hat Enterprise Linux 6.4及更早版本的openssl版本。

    卡兰比尔•辛格(Karanbir Singh)在CentOS上发布的消息同样清楚地表明了版本控制:

    今天早些时候,我们意识到在CentOS-6.5中运行openssl存在一个严重的问题

    Debian Wheezy

    Debian有DSA-2896-1 ,补丁库可以在这里find 。 这里有一个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 

    我想指出的是,私钥不是唯一应该被视为妥协的资产。 该漏洞有可能会泄漏与OpenSSL相同的地址空间(即相同的进程)中运行的任何内存。 因此,如果您运行的服务器进程中存在易受攻击的OpenSSL版本,则该进程所处理的任何信息 (包括密码,信用卡号和其他个人数据)都应被视为可能被泄露。

    FreeBSD 10.0openssl从端口

    FreeBSD安全小组发布了有关CVE-2014-0160(又名“Heartbleed”)和FreeBSD-SA-14:06.openssl的build议

    1. 更新FreeBSD

      • 通过二进制补丁更新FreeBSD

        i386amd64平台上运行RELEASE版本 FreeBSD的系统可以通过freebsd-update(8)工具进行更新:

         # freebsd-update fetch # freebsd-update install 
      • 从源代码更新FreeBSD

        1. 从下面的位置下载相关的修补程序,并使用PGP实用程序validation分离的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 
        2. 以root身份执行以下命令:

           # cd /usr/src # patch < /path/to/patch 
        3. 重新编译操作系统

          使用FreeBSD手册中描述的buildworldinstallworld

    2. 用最低版本1.0.1_10更新openssl端口

    3. 使用库重新启动所有守护进程,或重新启动系统

    4. 就好像您的系统已经被盗用一样 ,重新发出您的所有SSL密钥和/或证书以及可能泄露的信息(请参阅EEAA更一般的答案)。

    FreeBSD 9.x和FreeBSD 8.x

    这些系统默认情况下不会受到 Heartbleed问题的影响,因为依赖于较旧的0.9.x版本的openssl库, 除非从端口安装openssl (请参阅楼上的内容)。

    如果这些系统不容易受到Heartbleed问题的攻击,那么由于另一个本地漏洞(参见FreeBSD-SA-14:06.openssl和楼上的“FreeBSD 10.0”部分),可能会比早些时候升级系统更为明智:

    本地攻击者可能能够窥探签名过程,并可能从中恢复签名密钥。 [CVE-2014-0076]

    注意

    Heartbleed最初的build议是将FreeBSD 8.4和9.1列为潜在的漏洞。 由于缺lessHeartbeat扩展 (缺省的FreeBSD openssl库版本是0.9.x),这是不正确的。

    我发现几乎不可能确定在我使用的几个设备上使用的SSL版本。 虽然从技术上说,目前存在漏洞的主机无法缓解身份,但却是我名单的顶端。

    我把一个小型虚拟机放在一起,使用FiloSottile的testing模块对任意主机和端口执行检查。 初步的一瞥,代码看起来很合理。

    完成的VM的发布在这里 。 它是VMX格式。

    警告的话

    该脚本和虚拟机将显示您的系统的当前状态。 在过去的某个时候,你的系统完全有可能处于弱势状态,可能会被滥用。

    在这里显示的东西绝对是一个重要的修复,但它并没有让你摆脱应用更新和改变你所有的钥匙。

    亚马逊Linux(Amazon EC2中使用的Linux发行版)

    https://aws.amazon.com/amazon-linux-ami/security-bulletins/ALAS-2014-320/

    问题概述:在OpenSSL处理TLS心跳扩展数据包的方式中发现缺less边界检查。 这个漏洞可以用来从连接的客户端或服务器上显示多达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