如何修复Heartbleed漏洞

由于OpenSSL介于1.0.1至1.0.1g之间的版本在进行TLS及DTLS协议时无法正确的处理Heartbeat扩展包,可能导致允许远程攻击者通过特定的数据包来触发缓冲区溢出从而读取进程内存敏感信息,甚至是泄露私钥。涉及到的相关文件:d1_both.c与t1_lib.c。称之为Heartbleed Bug。(来源CVE-2014-0160漏洞描述)

详情

Heartbleed Bug(心跳漏洞)存在于linux下开源产品OpenSSL,大多数Linux服务器都会默认安装此服务。该漏洞在正常情况下通过SSL/TLS网络传输加密服务允许窃取敏感信息。SSL/TLS提供在互联网上的应用,如Web、电子邮件、即时消息(IM)以及一些虚拟专用网络(VPN)通信过程中的传输安全和隐私。

心碎漏洞允许互联网上所有的用户通过受影响的OpenSSL版本读取操作系统上受保护的信息,使得服务器提供商用来加密传输用户的用户名与密码明文密钥直接被窃取。这允许攻击者窃听通信,直接从服务和用户窃取数据,并进行模拟服务和用户。

测试

我们已经对我们自己的服务器进行了一些攻击测试。我们从外界进行攻击,甚至不留一点痕迹。无需获得任何特权或凭证,便能够窃取X.509证书密钥、用户名和密码、即时消息、电子邮件和商务文档和通信密钥。

修复

由于OpenSSL(1.0.1与1.0.2-beta版本)都会受到Heartbleed漏洞的影响,官方社区已经在第一时间提供修复方法。受影响的版本应该升级到的OpenSSL 1.0.1g。用户不能立即升级的话,也可以通过”-DOPENSSL_NO_HEARTBEATS”重新编译OpenSSL。建议服务商应该立即通知他们的用户并进行漏洞修复。

为何称为Heartbleed?

因为bug是在OpenSSL实现TLS/DTLS(传输层安全协议)heartbeat扩展(RFC6520)产生的。一旦被利用,它导致存储器内容从服务器到客户端的泄漏。