文/陳建軍 段海新
毒魷魚如何“黑”掉美國NSA的網站
文/陳建軍 段海新
著名開源軟件Squid存在高危漏洞,該漏洞被Squid團隊評為危險級別最高(Blocker)的漏洞。
毒魷魚(Squison)是Squid(魷魚)和Poison(中毒、下毒) 兩個詞的合成
我們最近發(fā)現了著名開源軟件Squid存在高危漏洞(CVE-2016-4553),可以導致攻擊者遠程污染任意HTTP網站的緩存。Squid是經典的Web代理或緩存軟件,許多商業(yè)的Web緩存、代理或安全產品也是基于Squid開發(fā)的,這些設備被廣泛部署于網絡運營商(ISP)、寬帶小區(qū)、公司或校園網,用于節(jié)省網絡帶寬、改善網絡性能、提升用戶體驗。攻擊者可以通過污染這種公共的基礎設施向該網絡所有用戶(受害者)的Web訪問返回任意指定內容,從而導致頁面替換、盜號、掛馬等嚴重后果。此外,由于這種攻擊發(fā)生在中間網絡,因而客戶端瀏覽器和服務端網站都很難察覺,因此攻擊隱蔽性非常高。
這一漏洞是由于Squid對于HTTP請求中Host頭處理不當,導致使用Squid緩存服務器不同網站緩存之間的隔離被打破,攻擊者只需發(fā)送一個惡意請求就可以完成緩存污染攻擊。該漏洞被Squid團隊評為危險級別最高(Blocker)的漏洞。這個漏洞作為研究成果的一部分,將在國際安全頂級會議CCS 2016上發(fā)表[4]。圖1是在某真實網絡中,攻擊者污染www.nsa.gov緩存后,受害者看到的被污染頁面。
圖1
我們發(fā)現,在部署有Squid透明緩存的網絡中,攻擊者只需要發(fā)送一個如下構造的HTTP請求,便可以造成任意HTTP網站的緩存被污染:
GET http://victim.com/ HTTP/1.1
Host: attack.com
該攻擊具體工作原理和流程如圖2所示。攻擊者向自己的服務器(attack.com)建立TCP連接,然后通過這個連接發(fā)送如圖所示的惡意請求。Squid的驗證模塊利用attack.com來檢查Host頭與IP地址是否匹配,但是當攻擊服務器返回內容時,Squid的緩存模塊卻利用victim.com來緩存內容,因此Squid將攻擊服務器的惡意內容緩存為victim.com。最后當受害者訪問victim.com時,得到的是攻擊者指定的內容。
需要指出的是,攻擊者可以通過投放Flash廣告的方式大規(guī)模遠程地發(fā)起這種攻擊。由于Squid軟件被大量ISP用來部署透明緩存,因此這個漏洞對互聯網安全有很大影響。
下面鏈接是整個攻擊過程的視頻演示:https://drive.google.com/file/ d/0ByM36MBckzBaQUFES0VYRlZydUE/view
圖2 漏洞攻擊流程示意
這個漏洞是我們此項研究成果的一小部分,還有更多的一系列攻擊(Host of Troubles),例如污染Apache Traffic Server緩存,污染CDN緩存,繞過Firewall,繞過WAF等。有關于更多詳細攻擊請參考我們的網站(hostoftroubles.com)[2]和論文[4]。
該漏洞同時存在于Squid 3和Squid 4中。需要提醒注意的是:目前Squid官方已經修復了這個漏洞[1]。
1.網絡運營商應當升級Squid緩存軟件到最新版,來完全防御這種攻擊。
2.網站管理員可以通過部署HTTPS,并啟用preloaded HSTS來減輕這種攻擊的影響。
3.瀏覽器用戶可以使用作者提供的在線檢測工具[3],檢測自己的網絡是否可以被攻擊。
(為清華大學網絡科學與網絡空間安全研究院)
參考鏈接:
[1] Squid對該漏洞的安全公告:http://www.squid-cache. org/Advisories/SQUID-2016_7.txt
[2] Host of Troubles網站:https://hostoftroubles.com
[3] 漏洞在線檢測工具:ttps://hostoftroubles.com/onlinechecker.html
[4] CCS2016論文鏈接:http://netsec.ccert.edu.cn/ duanhx/files/2010/12/host_of_troubles.pdf