五年了,Heartbleed安全漏洞补丁仍未全面普及。
Heartbleed安全漏洞在2012年被正式引入OpenSSL加密库,但直到2014年才被发现并得到修复。但直到五年之后的今天,仍有众多系统未能有效安装修复补丁。
本文希望为IT团队提供必要的信息,帮助大家判断是否要使用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安全漏洞会削弱SSL与TSL两大常见互联网通信协议的安全性。受到Heartbleed影响的网站,允许潜在的攻击者读取用户的访问历史。换言之,精心谋划的网络罪犯可以借此找出用户的加密密钥。
一旦加密密钥外泄,恶意攻击者将能够获取入侵系统所必需的凭证(包括用户名与密码)。在系统内部,入侵者还能利用失窃凭证所对应的授权级别发动更多后续攻击、窃听通信内容、顶替用户并夺取数据。
Heartbleed漏洞会削弱Heartbleed扩展的安全水平,进而损害SSL与TLS服务器同客户端之间的通信安全。
在理想情况下,Heartbleed扩展本应负责验证服务器请求,进而保护SSL与TLS协议。具体来讲,它允许通信端计算机发送Heartbleed请求消息。
每条消息中都包含有效载荷(一条包含已传输信息的文本字符串),外加一个代表有效载荷存储长度的数字(通常为16位整数)。在提供这些请求信息之前,Heartbleed扩展首先需要进行边界检查,验证输入请求并返回所请求的有效载荷长度。
OpenSSL Heartbleed扩展中的缺陷,导致验证流程中出现了一个漏洞。事实上,Heartbleed扩展程序并没有进行边界检查,而是分配了一个没有经过验证的内存缓冲区。恶意攻击者可以借此发送请求,并接收最多64 KB的内存缓冲区内可用信息。
内存缓冲区是临时的内存存储位置,其存在的目标在于存储传输中的数据。缓冲区内可能包含多种不同数据类型,代表着不同的信息存储形式。在本质上,内存缓冲区会在信息被发送至指定位置之前,一直保留这部分信息内容。
内存缓冲区不会进行数据整理,而是对数据进行分批存储。因此,内存缓冲区内可能包含敏感与财务信息,外加凭证、Cookie、网站页面与图像、数字资产以及任何传输中的数据。当恶意攻击者利用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漏洞当然也带来了负面影响:漏洞品牌开始兴起。Heartbleed漏洞就是由谷歌与Codenomicon两个实体同时发现的。
谷歌方面选择不公开披露这项漏洞,而仅与OpenSSL贡献者进行信息共享。但在另一方面,Condemonicon则选择将消息发布给公众。他们命名了这一漏洞,甚至创建了徽标与网站,并开始以营销活动的思路投入大规模宣传。
在接下来的几年中,很多公开曝光的漏洞都得到了如同知名产品般的对待——公关公司为其树立品牌,营销机构部署品牌名称、徽标甚至是专门的网站。虽然这些作法在一定程度上提高了公众对于零日漏洞的关注度,但同时也引发了巨大的潜在混乱。
如今,安全专家与软件开发人员正忙着处理数以千计的漏洞。为了给系统提供适当保护,他们需要首先确定漏洞的优先级。以此为基础,他们才能断言哪些漏洞需要立即修复,哪些可能稍后再行处理。有时候,那些被标榜为高危的“知名”安全漏洞,其实并没有那么重要。
毕竟在面对安全漏洞时,相关各方不一定总有充裕的时间、技能以及资源来判断其确切危险程度。因此,专业人士们应该集中精力为那些有利于公众的方式开发修复补丁,而非将安全漏洞变成一种营销噱头。
如今,距离Heartbleed漏洞的最初披露已经过去了五年,但它仍然广泛存在于众多服务器及系统当中。当然,OpenSSL的最新版本已经做好了修复,但尚未(或者无法)升级至修复版本的OpenSSL系统仍会受到这项漏洞的影响,且极易受到攻击。
对于恶意攻击者而言,只要能找到Heartbleed漏洞,接下来就一切好办:他们可以自动进行检索,然后轻松完成入侵。在找到这类易受攻击的系统之后,利用过程相当简单,由此获得的信息及/或凭证也能帮助他们快速推进其他后续攻击。
Heartbleed漏洞属于因人为错误而出现的OpenSSL安全缺陷。由于OpenSSL的广泛普及,不少应用程序都受到直接影响,致使恶意攻击者能够轻松获取大量数据。
在发现漏洞之后,谷歌员工找到了解决方案,并向OpenSSL贡献者提供了相关代码。在此之后,贡献者又进一步引导OpenSSL用户进行版本升级。听起来一切都很美好。
但截至目前,即使是完成了OpenSSL版本升级,由于代码库本身未经编辑,我们仍然能够从众多应用程序、系统以及设备当中找到Heartbleed漏洞。如果大家担心自己可能受到影响,可以点击此处测试您的系统。万一结果显示您的设备无法支持修复补丁,大家应当尽快采取其他措施以缓解或者消除风险。
服务器或者云平台的修复工作一般比较简单,但物联网设备就麻烦一些,可能需要单独为其安装补丁,甚至配合更高级的风险处理技术。在这方面,建议大家尽快与系统管理员联系,确定如何消除Heartbleed这个老漏洞可能带来的新问题。
原文链接: Five years later, Heartbleed vulnerability still unpatched
领取专属 10元无门槛券
私享最新 技术干货