OpenSSL Heartbleed 漏洞事件记录

  • 杨赛

2014 年 4 月 9 日

话题:安全AWSDevOps语言 & 开发

2014 年 4 月 7 日开始在互联网上引起轩然大波的“OpenSSL Heartbleed”漏洞是一个非常严重的漏洞,安全人士“道哥的黑板报”表示该漏洞可能成为 2014 年的“最佳漏洞”之一,造成的影响可能会超过去年 Struts 框架远程执行漏洞。

以下是 InfoQ 中文站对本次漏洞披露过程、讨论过程和影响范围的事件记录,供参考。

2014 年 4 月 7 日,CloudFlare 公司在其博客上发布了一个公开声明,表示发现了 OpenSSL 1.0.1 版本当中的一个尚未被公开的漏洞,并表示 CloudFlare 已经在之前一周修复该 bug。同日,OpenSSL 官网发布该漏洞通告,漏洞标识为CVE-2014-0160,通告内容如下:

TLS 心跳扩展的处理过程漏掉了一步边界检测的步骤,这个漏洞使攻击者能够从客户端与服务器端连接的内存泄露中读取多达 64KB 的数据。

OpenSSL 1.0.1、1.0.1f、1.0.2-beta 和 1.0.2-beta1 版本包含本漏洞。

Google 安全组的 Neel Mehta 发现了本漏洞,而 Adam Langley agl@chromium.org 和 Bodo Moeller bmoeller@acm.org 提供了漏洞的补丁,感谢他们。

所有受影响的用户需尽快升级至 OpenSSL 1.0.1g 版本。升级有困难的用户可以通过-DOPENSSL_NO_HEARTBEATS选项重新编译 OpenSSL 进行临时修补。

1.0.2-beta2 更新中将修复这个漏洞。

官方通告发布之后,安全公司 Codenomicon单独建立网页对该漏洞进行更详细的描述与跟进,并表示其工程师在该漏洞披露之前早已单独发现了这个漏洞。由于该漏洞跟 heartbeat 与内存泄露的相关性,本漏洞被形象的描述为Heartbleed(心脏出血)。Heartbleed.com 上有一份详细的 FAQs,摘要部分如下:

  • 这是一个非常严重的 bug,导致全球互联网大量私钥和其他加密信息处于暴露的危险下。
  • 本漏洞从 2011 年 12 月开始进入 OpenSSL,并在 2012 年 3 月 14 日 OpenSSL 1.0.1 正式发布后开始大量流入市场。
  • Debian Wheezy、Ubuntu 12.04.4 LTS、CentOS 6.5、Fedora 18、OpenBSD 5.3、FreeBSD 10.0、NetBSD 5.0.2、OpenSUSE 12.2 等发行版默认搭载了含有本漏洞的 OpenSSL 版本。
  • 利用本漏洞抓取敏感信息不会留下任何痕迹。

社区讨论

该漏洞在被公开纰漏后开始迅速传播。OpenSSL 官方通告在Hacker NewsLWN知乎等平台上引发大量讨论,讨论方向包括:

吐槽 OpenSSL 的编码实践。造成边界检查失效的代码被视为“难以通过代码审查”,而即使是修复的补丁也被评价为“不忍直视”:

if (1 + 2 + 16 > s->s3->rrec.length) 
if (1 + 2 + payload + 16 > s->s3->rrec.length) 

OpenBSD 的deraadt 评价“OpenSSL 的开发团队是不负责任的”,还有人把 2009 年的一篇《OpenSSL 的开发者们都是猴子》推到了 Hacker News 上,批评该项目的代码质量。

dmix 写了一个脚本遍历 Alexa 排名前一千的网站,遍历结果显示约有 30%~40% 的网站包含本漏洞。他表示没有测试中国的网站,因为国内网站的 443 端口从国外嗅探纷纷会超时。

ZDNet 的读者谴责了 CloudFlare,认为这次造成这么大的影响很大程度上是因为 CloudFlare 没有走“负责任的漏洞披露过程”,在官方补丁发布之前先做了通告,而 CloudFlare 的工程师则坚称自己披露的时间点在 OpenSSL 官方通告被分享到 Hacker News 之后,因此没有过失。

@ex509 在其博客上针对本漏洞写了一篇详细的技术分析,国内的Fish将其翻译为中文并发布在乌云知识库

知道创宇的余弦在知乎上表示“@知道创宇安全研究团队 实测可以 Dump 出淘宝、微信、网银、陌陌、12306 等各大使用 OpenSSL 服务的一些内存信息,里面有用户等的敏感内容(有些重要网站含明文密码)”,并表示“这事的影响超乎想象。”

@ZoomEye 搜索引擎制作了一份受本次漏洞影响的网站地图

360 网站卫士推出了一个该漏洞的检查服务,该服务技术负责人赵武在微博上建议“负责任的网站方没搞清楚之前还是先停服务吧。”

影响范围

4 月 8 日,有大量由该 bug 导致的各网站漏洞被披露在 Wooyun.org,包括蘑菇街、搜狗、盛大网络、UCloud、淘宝、开源中国、豌豆荚、唯品会等,各网站的工程师均在 Wooyun 上回应表示正在修复,部分大型网站的 OpenSSL 问题已经修复。

AWS 在 4 月 8 日发布升级通知表示收到本漏洞影响的 ELB 服务器已经升级,EC2 上提供的 AMI 已经替换为没有该漏洞的版本,同时也在帮助其 Elastic Beanstalk 和 CloudFront 的用户修复本问题。

Akamai 首席安全官在 4 月 8 日发布博客表示已经在本漏洞公开纰漏之前完成了修复。Heroku 在 4 月 8 日发布修复通告后提醒用户更改密码。

已经发布升级通告的发行版包括红帽(RHEL 桌面版、服务器版、HPC、Workstation)、Fedora(19、20)、Ubuntu(13.10、12.10、12.04 LTS)、Debian

安全AWSDevOps语言 & 开发