在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技術來從用戶的請求數據中提取出加密信息了。
具體的攻擊流程圖
據了解,在周三的演示過程中,安全研究人員將會演示如何利用紐約時報官網中的惡意廣告來精確測量出經過加密處理的響應信息大小。在整個過程中,安全研究人員將會使用一個虛擬的第三方網站(targetwebsite.com)來發送加密信息。除此之外,他們還將會演示如何從用于防止跨站請求偽造攻擊的安全令牌中推測出數據信息。
雖然目前一些網站部署了基本的安全措施,但是大多都不能夠預防HEIST攻擊,所以這類攻擊方式在最近這幾年或許會變得頻繁起來。目前針對HEIST攻擊的預防方法,要么禁用第三方的cookie,要么禁止javascript腳本。但是第三方的cookie和javascript都是普通用戶訪問web的基本要求,所以這兩名研究人員也希望通過Black Hat大會一同尋找和制定一個合理有效的解決方案。