摘要nginx
2014年,安全研究人员发现了SSL的严重缺陷,这就是后来咱们所知的Heartbleed漏洞。Heartbleed漏洞削弱了最多见的Internet通讯协议(SSL和TSL)的安全性。受Heartbleed影响的网站容许潜在的***者读取他们的内存。这意味着***者能够得到加密密钥,依次凭据在系统内部发起更多***,例如:窃听通讯、模拟用户以及窃取数据等。本文分析Heartbleed漏洞的原理并提出防治手段,以供系统管理员参考。web
SSL简介浏览器
SSL是Secure Sockets Layer(安全套接字层)的缩写,是一系列加密技术,可以让Web用户保护其在Internet上传输的信息的隐私。安全
当您访问安全网站(例如mail.aliyun.com)时,URL旁会显示一个锁,代表您与该站点的通讯已加密。 这是Safari浏览器中的外观:服务器
图1:SSL在网站中的应用网络
该锁应该代表第三方将没法读取您发送或接收的任何信息。 在后台,SSL经过将您的数据转换为只有收件人知道如何解密的编码消息来实现此目的。 若是恶意方正在听对话,它将仅看到看似随机的字符串,而不是电子邮件,论坛帖子,信用卡号或其余私人信息的内容。SSL由Netscape于1994年引入。近年来,主流在线服务已趋向于默认使用加密。ide
若是正确实施,则认为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.