Heartbleed漏洞的原理与防治
作者:互联网
摘要
2014年,安全研究人员发现了SSL的严重缺陷,这就是后来我们所知的Heartbleed漏洞。Heartbleed漏洞削弱了最常见的Internet通信协议(SSL和TSL)的安全性。受Heartbleed影响的网站允许潜在的***者读取他们的内存。这意味着***者可以获得加密密钥,依次凭据在系统内部发起更多***,例如:窃听通信、模拟用户以及窃取数据等。本文分析Heartbleed漏洞的原理并提出防治手段,以供系统管理员参考。
SSL简介
SSL是Secure Sockets Layer(安全套接字层)的缩写,是一系列加密技术,可让Web用户保护其在Internet上传输的信息的隐私。
当您访问安全网站(例如mail.aliyun.com)时,URL旁会显示一个锁,表明您与该站点的通信已加密。 这是Safari浏览器中的外观:
图1:SSL在网站中的应用
该锁应该表明第三方将无法读取您发送或接收的任何信息。 在后台,SSL通过将您的数据转换为只有收件人知道如何解密的编码消息来实现此目的。 如果恶意方正在听对话,它将仅看到看似随机的字符串,而不是电子邮件,论坛帖子,信用卡号或其他私人信息的内容。SSL由Netscape于1994年引入。近年来,主流在线服务已趋向于默认使用加密。
如果正确实施,则认为SSL是高度安全的。但是对于SSL安全而言,2014年是糟糕的一年。Heartbleed不是那年发现的唯一安全漏洞。2月,在Apple的SSL实施中发现了一个严重缺陷。下个月,在另一个SSL实例中发现了一个漏洞,该实例在开源操作系统中很流行。
OpenSSL简介
OpenSSL是允许计算机使用SSL加密标准进行通信的软件。 这是一个由志愿者创建和维护的开源项目。 它于1998年首次发布,现已成为世界上最受欢迎的SSL实现之一。
OpenSSL被广泛使用。 原因之一是它已被合并到其他各种软件产品中。 例如,两个最受欢迎的Web服务器软件包,称为Apache和nginx,都使用OpenSSL加密网站。
在发生Heartbleed***时,OpenSSL网站仅列出了15位活跃的开发人员,其中大多数是自愿为该项目做出贡献的。 但是,并非所有对OpenSSL软件所做的更改都是由这15个人编写的。 而是,这些开发人员帮助过滤和组织来自偶尔做出贡献的较大人群的建议更改。
考虑到备受瞩目的商业软件项目通常需要数十甚至数百人来进行工作,因此,OpenSSL团队在2012年推出新版本的软件时没有注意到细微的Heartbleed错误就不足为奇了。
发现Heartbleed错误后,几家大型科技公司集中了资源,以加大力度保护OpenSSL和其他构成互联网核心基础结构的开源软件。
Heartbleed漏洞***的原理
SSL标准包括“心跳”选项,该选项为SSL连接一端的计算机提供了一种方法来再次检查线路的另一端是否仍然有人。 此功能很有用,因为某些Internet路由器在空闲时间过长时会断开连接。 简而言之,心跳协议的工作方式如下:
图2:心跳协议的工作方式
心跳消息分为三个部分:请求确认,简短的随机选择消息(在这种情况下为“banana”)以及该消息中的字符数。 只需假定服务器确认已收到请求,然后将消息鹦鹉化。
Heartbleed***利用了服务器过于信任这一事实。 当有人告诉它消息包含6个字符时,服务器会自动发送回6个字符作为响应。 恶意用户可以利用服务器的轻信:
显然,“giraffe”一词的长度不超过100个字符。 但是服务器在发回响应之前不会费心检查,因此它会发回100个字符。 具体来说,它将发回7个字符的单词“giraffe”,然后在服务器内存中紧随单词“giraffe”之后存储的93个字符返回。 计算机通常以随意的顺序存储信息,以将其尽可能紧密地包装到其内存中,因此无法确定可能返回的信息。 在这种情况下,单词“长颈鹿”后面的记忆位包含属于用户John Smith的敏感个人信息。
在真正的Heartbleed***中,***者不仅要求输入100个字符。 ***者可以要求大约64,000个字符的纯文本。 它不仅可以询问一次,还可以一遍又一遍地发送恶意的心跳消息,使***者每次都能取回服务器内存的不同片段。 在此过程中,它可以获得从未打算向公众提供的大量数据。
解决此问题的方法很简单:服务器只需要较少的信任即可。 服务器需要盲目地发回所请求的数据,而不是盲目地发回所请求的数据,而是需要检查服务器是否要求发回的字符数比开始时多。 这正是OpenSSL对Heartbleed Bug的修复。
Heartbleed漏洞的今天
在披露Heartbleed漏洞五年后的今天,它仍然存在于许多服务器和系统中。 当然,当前版本的OpenSSL是固定的。但是,未升级到已修补版本的OpenSSL的系统仍然会受到该漏洞的影响,并且容易受到***。对于***者而言,发现Heartbleed漏洞是一项奖励。***者如果通过自动检索工具,则发现漏洞更为容易。***者找到易受***的系统后,利用该漏洞相对容易。发生这种情况时,***者就可以访问可用于发起其他***的信息或凭据。
Heartbleed漏洞的修补
Heartbleed漏洞是由于人为错误引入OpenSSL的安全漏洞。 由于OpenSSL的普及,许多应用程序受到了影响,***者才能够获取大量数据。
发现该漏洞后,Google员工找到了解决方案,并向OpenSSL贡献者提供了解决此问题的代码。 然后,指示OpenSSL用户升级到最新的OpenSSL版本。
但是,今天,即使升级OpenSSL版本而不是编译代码库,仍然可以在应用程序,系统和设备中找到Heartbleed漏洞。 如果您担心自己可能会受到影响,可以在设备无法支持修补程序的情况下测试系统的Heartbleed漏洞和修补程序,以消除风险或减轻风险。
任何服务器或云平台都应该相对容易打补丁。 但是,IoT设备有时可能需要打补丁,因此可能需要更高级的缓解技术。
总结
Heartbleed***的规模为Internet社区敲响了警钟。 作为回应,十多家技术公司已承诺为“核心基础设施计划”做出贡献。 该项目由非营利性Linux基金会组织,将把资金引导到资金不足的广泛使用的开源项目,例如OpenSSL。
该基金会在2014年4月下旬告诉Ars Technica,它已经从包括亚马逊,微软,谷歌和Facebook在内的主要技术公司获得了390万美元的捐款。
由惠普联合创始人威廉·休利特(William Hewlett)和他的妻子创立的惠普基金会(Hewlett Foundation)也为互联网安全工作提供资金。 出于非凡的远见卓识,该基金会于2014年4月2日,即公开披露Heartbleed计划的前几天,宣布了一项2,000万美元的“网络计划”。 该基金会希望帮助“建立一个专家网络,以确保互联网的安全,开放和良好的管理。”
这些投资是纠正互联网安全资金严重不足的一小步。 网络占据了数十亿美元的商业收入; 即使在这笔2400万美元的慈善投资之后,仍然迫切需要投入更多的资源来保护网络。
参考文献:
[1]Gilad David Maayan.Five years later, Heartbleed vulnerability still unpatched[EB/OL].https://blog.malwarebytes.com/exploits-and-vulnerabilities/2019/09/everything-you-need-to-know-about-the-heartbleed-vulnerability/?web_view=true,2020-731.[2]Timothy B. Lee.The Heartbleed Bug, explained[EB/OL].https://www.vox.com/2014/6/19/18076318/heartbleed,2015-5-14.
标签:SSL,OpenSSL,Heartbleed,防治,漏洞,服务器,个字符 来源: https://blog.51cto.com/14857544/2634158