约瑟夫笔下的“心脏流血”到底是什么漏洞,值得他以如此重的口吻写下这样一句话?
如果你经历过2014年的那场互联网安全危机,一定还记忆犹新。
“心脏流血”漏洞就如同打开地狱的一把钥匙一样,无数黑客利用这一漏洞,肆无忌惮地对全球各个目标网站发动攻击。
大到雅虎、GitHub、思科,小到不知名的小站点,全都受到了影响。
一时间,互联网一度成为黑客们的天堂。
- 美国第二大营利性连锁医院机构的安全密钥被窃,450万份病人病例泄密;
- 加拿大联邦政府关闭了税务局及多个部门的在线服务;
- Steam、英雄联盟、索尼在线娱乐等游戏受到影响。
全球不少地区的网民,还出现了恐慌潮,在漏洞被披露的几天内,不敢访问https网站,生怕自己的账号密码等敏感信息被黑客窃取。
工程师们也在加班加点修复漏洞,避免黑客利用该漏洞攻击网站。
美国国家安全局也因为该漏洞,深陷信任危机。据彭博新闻社报道,美国国家安全局在漏洞出现不久后,便知道了它的存在,但却没有对外披露,而是严格保守秘密,以便作为发动网络战争的武器。
“心脏流血”的起源
“心脏流血”漏洞,要从其编写者罗宾·赛格尔曼说起。
2012年,传输层安全(TLS)和数据报传输层安全(DTLS)协议的心跳扩展成为标准,它提供了一种无需每次都重新协商连接,就能测试和保持安全通信链路的方式。
其作者之一的罗宾在2011年为OpenSSL实现了心跳扩展,随后由OpenSSL四位核心开发者之一的斯蒂芬·N·汉森负责审核。
遗憾的是,斯蒂芬并没有发现其中的错误,2011年年末,这一藏有致命缺陷的代码,被加入到OpenSSL的源代码库中。
OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信、避免被窃听。Apache使用它加密https,OpenSSH使用它加密SSH。
基本上大部分SSL协议都采用OpenSSL。换句话说,只要哪一个家网站安装了SSL证书,就会存在这一漏洞,让黑客有机可乘。
原本为网站安装SSL证书,是为了保护网站安全,没曾想适得其反。
这一漏洞存在了长达两年的时间,2014年才由谷歌安全团队的尼尔·梅塔发现并报告。
“心脏流血”的原理
“心脏流血”到底是怎么被利用,窃取敏感数据的呢?
试着用一个不太恰当,但很形象、很通俗易懂的例子来解释它的原理。
我们将服务器比作 物流公司的传送带设备,访客比作分拣员。用户从服务器上接收数据,就相当于分拣员从传送带上拿取快递。
分拣员使用多大的袋子,传送带上的快递就会将其填满,正常情况下不会出现问题。
但有一天,黑客出现了,他负责分拣发往新疆的快递,发往新疆的快递很少,本来只需要使用很小的袋子,就可以装满。但不怀好意的他,使用了很大的袋子,因为控制传送带的系统存在一个严重的bug,导致其为了装满这个大袋子,将发往其他地区的快递,也装进了黑客的袋子里。
黑客便获得了其他地区的快递。其他地区的快递,便是其他用户的敏感数据。
要命的是,黑客还可能拿到控制传送带系统的钥匙,一旦黑客获得了这把钥匙,就可以随意控制传送带,偷取任何地区的快递包裹。
这把钥匙便是密码学上所说的私钥。
黑客每次在传送带上最多拿64个包裹,因此不可能一次将传送带上的包裹拿完,所以攻击量很小,不会导致所有用户的数据泄露,但因为有漏洞的存在,黑客可以频繁抓取用户的敏感数据,最终将所有包裹偷走。
以上便是黑客利用“心脏流血”漏洞攻击的过程。
文末我们来说一些有意思的事情。
虽然“心脏流血”在全球范围内造成了很大的破坏,但也不是完全没有好处。
反恶意软件研究人员就利用了该漏洞,访问了网络犯罪的秘密论坛。黑产们可能做梦也没有想到会因为计算机程序的漏洞,而使自己有面临牢狱之灾的风险。