HEIST是一項新的HTTP/2協議漏洞,它能從HTTPS通訊中盜取加密內容。安全專家Michael Cobb將在下文解釋此種攻擊的實現原理以及如何阻止這種攻擊。
HTTP/2協議設計的初衷是為改進安全和性能,但這也顯然會使威脅因素能夠造成更大的破壞。在2016年的美國Black Hat大會上,來自比利時魯汶大學(University of Leuven)的博士研究員Tom Van Goethem和Mathy Vanhoef披露了一種基于網頁的,能夠僅僅利用JavaScript從HTTPS通訊中盜取加密信息的攻擊方式。直到今天,例如CRIME和BREACH這樣面向安全嵌套層SSL和傳輸層安全協議TLS的攻擊方式,需要攻擊者能夠觀察和操縱受害者以及他們所訪問的網站——即中間人攻擊,使得攻擊者不那么容易找到漏洞。研究人員發現的這種名為HEIST的攻擊方式,只要受害者訪問了被攻擊者控制的中間站點或僅僅是基于JavaScript的廣告頁,“HTTP加密信息就能夠通過TCP窗口進行盜取”,從而使用戶的隱私遭受到威脅。更糟糕的是,HEIST攻擊能夠利用HTTP/2協議的特征來提升攻擊的速度。
HEIST是一種HTTPS上的旁路攻擊方式。其本身并不會真正打斷終端加密過程,然而通過將弱點和未知行為加入到與瀏覽器、HTTP、SSL/TLS以及TCP的交互過程中,可以在不同源應答的瀏覽器中發現有關交換數據的大量信息,進而猜測其中傳輸的內容,即使這些內容是加密的并且通過HTTPS發送。其工作原理是通過破解在TCP上的HTTPS應答方法來測量單一HTTPS應答的長度。JavaScript代碼是不允許獲取返回的應答中的數據長度,然而HEIST所應用的JavaScript使用了兩個新的應用程序接口——HTML5資源定時器以及獲取來生成開始和結束時間,而這些內容能夠從加密的應答中推測到。一旦攻擊者掌握了加密應答的長度,他便可以使用BREACH或CRIME攻擊的方式來直接獲取其中的明文信息。網站通常使用的文件壓縮的方式來降低傳輸的數據量,從而使頁面能夠更快地載入,而BREACH和CRIME攻擊方式均可以通過操縱壓縮的方式來對網站載荷進行解密。
如果頁面上有重復的信息,服務器只會發送信息一次。HEIST腳本會向網站發送多次請求,通過改變每個請求的字節內容,試圖匹配的頁面上的區塊信息,這其中就包括密碼或銀行帳戶號碼。猜測塊中的數據的嘗試如果是錯誤的,其結果會導致數據體積的增大,而如果猜測與數據塊匹配,數據將不會有明顯的體積增加,這是因為壓縮功能不會發送重復的數據塊。重復這一過程,并分析數千次該過程產生的每個應答的數據尺寸,將允許腳本最終確定包含在網頁上的明文信息。這種類型的攻擊可能需要一段時間,但如果頁面是使用HTTP/2協議加載的,攻擊所花費的時間將大大減少,因為所有的請求都是包含在某一單一的HTTP/2連接中。同時HTTP/2所使用的壓縮格式hpack,使得預測頭幀長度更加容易。
HTTP/2是面向超文本傳輸協議15年來的首次主要升級。其主要目標在于改進網站性能,但結果是其安全性有可能被弱化,HTTP/2中的新特性將毫無疑問地增加黑客可利用的攻擊面。Imperva的報告中討論了HTTP/2協議中相關的四項漏洞以及攻擊向量:“HTTP/2:下一代Web協議中四項主要缺陷的深入分析”,其中兩項已經可以確認在HTTP/1.x版本中就已存在。盡管沒有哪種技術能夠完全確保敏感信息的安全,然而HTTPS是安全訊通的核心因素,任何可破解的漏洞都會將整個網絡置于危險之中。
在有關HTTP/2的深入研究面世前,延遲HTTP/2協議的實施也許是存放敏感數據網站的最佳選擇。那些想要利用HTTP/2協議優勢以提升頁面訪問速度的管理員們,應該在升級前確保所有已知漏洞均被修復。大多數網站仍無法阻止BREACH攻擊,并且盡管尚無BREACH已經成功盜取真實賬戶的報告,基于HEIST的攻擊可能會改變這種情況。Van Goethem與Vanhoef的研究報告中詳細闡明了HEIST的攻擊方法。如Qualys的SSL server這樣的在線工具能夠檢查網站是否能夠抵御BREACH或類似攻擊方法。
HEIST攻擊方法若要奏效,網頁必須在自己的內容中包含或反映瀏覽器的部分請求,且用戶必須啟用JavaScript以及第三方cookies。如果實際環境中有報告稱HEIST已經成功實施,用戶應該考慮打開主流瀏覽器均提供的隱私瀏覽模式。這一功能會禁用第三方cookies,使HEIST腳本無法通過HTTPS保護的網頁的驗證。然而,由于會阻止瀏覽器中JavaScript的執行,這將使許多網站無法訪問。