首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

五年了,Heartbleed漏洞仍未修复

五年了,Heartbleed安全漏洞补丁仍未全面普及。

Heartbleed安全漏洞在2012年被正式引入OpenSSL加密库,但直到2014年才被发现并得到修复。但直到五年之后的今天,仍有众多系统未能有效安装修复补丁。

本文希望为IT团队提供必要的信息,帮助大家判断是否要使用Heartbleed漏洞的修复补丁。但这里要提醒一句:即使安装补丁,您的用户数据仍有可能受到其他攻击的影响。

Heartbleed安全漏洞是怎么回事?

Heartbleed是OpenSSL加密库中的一项代码缺陷,具体如下:

memcpy(bp, pl, payload);

2014年,研究人员在流行密码库OpenSSL当中发现一项安全漏洞。顺带一提,OpenSSL负责为开发人员提供用于实现安全套接字层(SSL)与传统层安全性(TLS)协议的工具与资源。

目前,各类网站、电子邮件、即时消息(IM)应用程序以及虚拟专用网络(VPN)都依赖SSL与TLS协议,用以保障互联网上通信内容的安全性与私密性。因此,只要使用OpenSSL组件,您的应用程序就会受到Heartbleed漏洞的影响。在漏洞曝光之时,已经有高达17%的SSL服务器被划入影响范围。

在漏洞被发现之后,很快得到CVE-2014-0160这一官方漏洞编号。不过在民间,大家普遍将其称为Heartbleed。实际上,这个朗朗上口的名号来自Codenomicon的一位工程师,同时也是此项漏洞的发现者之一。

Heartbleed这个名称,表达的是该安全漏洞的源头——RFC 6520 Heartbleed扩展的一项错误实现。该扩展当中封装有OpenSSL的SSL与TLS协议。

Heartbleed安全漏洞的表现

Heartbleed安全漏洞会削弱SSL与TSL两大常见互联网通信协议的安全性。受到Heartbleed影响的网站,允许潜在的攻击者读取用户的访问历史。换言之,精心谋划的网络罪犯可以借此找出用户的加密密钥。

一旦加密密钥外泄,恶意攻击者将能够获取入侵系统所必需的凭证(包括用户名与密码)。在系统内部,入侵者还能利用失窃凭证所对应的授权级别发动更多后续攻击、窃听通信内容、顶替用户并夺取数据。

Heartbleed的工作原理

Heartbleed漏洞会削弱Heartbleed扩展的安全水平,进而损害SSL与TLS服务器同客户端之间的通信安全。

在理想情况下,Heartbleed扩展本应负责验证服务器请求,进而保护SSL与TLS协议。具体来讲,它允许通信端计算机发送Heartbleed请求消息。

每条消息中都包含有效载荷(一条包含已传输信息的文本字符串),外加一个代表有效载荷存储长度的数字(通常为16位整数)。在提供这些请求信息之前,Heartbleed扩展首先需要进行边界检查,验证输入请求并返回所请求的有效载荷长度。

OpenSSL Heartbleed扩展中的缺陷,导致验证流程中出现了一个漏洞。事实上,Heartbleed扩展程序并没有进行边界检查,而是分配了一个没有经过验证的内存缓冲区。恶意攻击者可以借此发送请求,并接收最多64 KB的内存缓冲区内可用信息。

内存缓冲区是临时的内存存储位置,其存在的目标在于存储传输中的数据。缓冲区内可能包含多种不同数据类型,代表着不同的信息存储形式。在本质上,内存缓冲区会在信息被发送至指定位置之前,一直保留这部分信息内容。

内存缓冲区不会进行数据整理,而是对数据进行分批存储。因此,内存缓冲区内可能包含敏感与财务信息,外加凭证、Cookie、网站页面与图像、数字资产以及任何传输中的数据。当恶意攻击者利用Heartbleed漏洞时,他们会通过欺诈手段通过Heartbleed扩展获取内存缓冲区中的所有可用信息。

Heartbleed的修复情况

谷歌公司的Bodo Moeller与Adam Langley为Heartbleed创建了修复程序。他们编写了代码,提醒Heartbleed扩展应忽略一切除有效载荷必要数据之外的Heartbleed请求信息。

下面来看Heartbleed修复代码示例:

if (1 + 2 + payload + 16 > s->s3->rrec.length) return 0; /* silently discard per RFC 6520 sec. 4 */

Heartbleed漏洞给OpenSSL带来的影响

Heartbleed安全漏洞的曝光在世界范围内引起了恐慌。在安装这一修复补丁之后,关注者们开始积极寻求事件的缘由。在对OpenSSL项目进行一番严格审查之后,人们意识到这套广受欢迎的加密库仅由两人负责维护,且相关预算少得可怜。

这一发现,给我们带来了两项积极的举措,甚至在一定程度上改变了开源的格局:

  • 组织意识到支持开源项目的重要性。因为OpenSSL的两名成员只能用自己的积蓄支持这项事业。另一方面,使用开源成果的组织完全可以提供保障项目安全所需要的资源。
  • 为了资助重要的开源项目,Linux启动了核心基础设施设计(CII)。CII选定那些最关键的开源项目,特别是对互联网以及其他信息系统具有重要影响的项目。CII收取大型组织的捐款,并以规划及赔款的形式将其交付至各开源软件项目手中。

与以往引发变革的无数危机一样,Heartbleed漏洞当然也带来了负面影响:漏洞品牌开始兴起。Heartbleed漏洞就是由谷歌与Codenomicon两个实体同时发现的。

谷歌方面选择不公开披露这项漏洞,而仅与OpenSSL贡献者进行信息共享。但在另一方面,Condemonicon则选择将消息发布给公众。他们命名了这一漏洞,甚至创建了徽标与网站,并开始以营销活动的思路投入大规模宣传。

在接下来的几年中,很多公开曝光的漏洞都得到了如同知名产品般的对待——公关公司为其树立品牌,营销机构部署品牌名称、徽标甚至是专门的网站。虽然这些作法在一定程度上提高了公众对于零日漏洞的关注度,但同时也引发了巨大的潜在混乱。

如今,安全专家与软件开发人员正忙着处理数以千计的漏洞。为了给系统提供适当保护,他们需要首先确定漏洞的优先级。以此为基础,他们才能断言哪些漏洞需要立即修复,哪些可能稍后再行处理。有时候,那些被标榜为高危的“知名”安全漏洞,其实并没有那么重要。

毕竟在面对安全漏洞时,相关各方不一定总有充裕的时间、技能以及资源来判断其确切危险程度。因此,专业人士们应该集中精力为那些有利于公众的方式开发修复补丁,而非将安全漏洞变成一种营销噱头。

Heartbleed的现状

如今,距离Heartbleed漏洞的最初披露已经过去了五年,但它仍然广泛存在于众多服务器及系统当中。当然,OpenSSL的最新版本已经做好了修复,但尚未(或者无法)升级至修复版本的OpenSSL系统仍会受到这项漏洞的影响,且极易受到攻击。

对于恶意攻击者而言,只要能找到Heartbleed漏洞,接下来就一切好办:他们可以自动进行检索,然后轻松完成入侵。在找到这类易受攻击的系统之后,利用过程相当简单,由此获得的信息及/或凭证也能帮助他们快速推进其他后续攻击。

装补丁,还是不装补丁,这是个问题

Heartbleed漏洞属于因人为错误而出现的OpenSSL安全缺陷。由于OpenSSL的广泛普及,不少应用程序都受到直接影响,致使恶意攻击者能够轻松获取大量数据。

在发现漏洞之后,谷歌员工找到了解决方案,并向OpenSSL贡献者提供了相关代码。在此之后,贡献者又进一步引导OpenSSL用户进行版本升级。听起来一切都很美好。

但截至目前,即使是完成了OpenSSL版本升级,由于代码库本身未经编辑,我们仍然能够从众多应用程序、系统以及设备当中找到Heartbleed漏洞。如果大家担心自己可能受到影响,可以点击此处测试您的系统。万一结果显示您的设备无法支持修复补丁,大家应当尽快采取其他措施以缓解或者消除风险。

服务器或者云平台的修复工作一般比较简单,但物联网设备就麻烦一些,可能需要单独为其安装补丁,甚至配合更高级的风险处理技术。在这方面,建议大家尽快与系统管理员联系,确定如何消除Heartbleed这个老漏洞可能带来的新问题。

原文链接Five years later, Heartbleed vulnerability still unpatched

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/FHRwXHBh0BQIjMJo1xtm
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券