在Black Hat 2016大会上,两名比利时的安全研究人员展示了他们今年的研究成果。他们发现了一个WEB攻击方式可以绕过HTTPS加密得到明文信息。他们把这种攻击方式叫做HEIST攻击。HEIST的全称是Encrypted Information can be Stolen through TCP-Windows。大体意思就是通过TCP-Windows协议可以窃取到加密的明文信息。
FreeBuf百科:TCP-Windows协议这里得先说说什么是TCP-Windows协议。TCP-Windows协议也叫做TCP Receive Window,它是在TCP连接两端都有的缓冲区,用于暂时保存到来的数据。在这个缓冲区中的数据会被发送到应用程序中,为新到来的数据腾出空间。如果这个缓冲满了,那么数据的接收方会警告发送方在缓冲去清空之前已经不能在收取更多的数据了。这其中涉及到一些细节,但那都是很基本的东西。一般,设备会在TCP Header信息中通知对方当前它的TCPWindows的大小。
HEIST攻击的利用条件十分简单,只需要几行简单的javascript代码即可,并且无需借助中间人攻击。首先会先抓取并且保存传输的敏感数据,这个攻击方式可以获取到银行卡卡号,真实姓名,电话号码,社会安全号码等私人敏感信息。但是众所周知,这些数据大部分都是HTTPS加密的。然后再对其加密数据的大小长度进行一个探测。有很多网站都会使用文件压缩技术来提升网页的加载速度,而攻击者正好可以利用其中的设计缺陷来解密数据payload(类似BREACH攻击和CRIME攻击)。
HEIST技术可以利用新的API(Resource Timing和Fetch)来计算出目标主机发送的传输帧和窗口的数量。在整个处理过程中,研究人员可以利用一段JavaScript代码来确定HTTPS响应信息的实际大小。然后,恶意HEIST代码就可以配合BREACH技术来从用户的请求数据中提取出加密信息了。
具体的攻击流程图
据了解,在周三的演示过程中,安全研究人员将会演示如何利用纽约时报官网中的恶意广告来精确测量出经过加密处理的响应信息大小。在整个过程中,安全研究人员将会使用一个虚拟的第三方网站()来发送加密信息。除此之外,他们还将会演示如何从用于防止跨站请求伪造攻击的安全令牌中推测出数据信息。
虽然目前一些网站部署了基本的安全措施,但是大多都不能够预防HEIST攻击,所以这类攻击方式在最近这几年或许会变得频繁起来。目前针对HEIST攻击的预防方法,要么禁用第三方的cookie,要么禁止javascript脚本。但是第三方的cookie和javascript都是普通用户访问web的基本要求,所以这两名研究人员也希望通过Black Hat大会一同寻找和制定一个合理有效的解决方案。