研究人員演示了4種HTTP請(qǐng)求走私攻擊的新變種
一項(xiàng)新的研究確定了四種針對(duì)HTTP請(qǐng)求走私攻擊的新變種,它們可以針對(duì)各種商用Web服務(wù)器和HTTP代理服務(wù)器。
在今天的黑帽安全會(huì)議上,SafeBreach的安全研究副總裁Amit Klein展示了這一發(fā)現(xiàn),他說(shuō),這些攻擊突出表明,web服務(wù)器和HTTP代理服務(wù)器容易受到HTTP請(qǐng)求走私攻擊的影響,據(jù)記錄首次發(fā)現(xiàn)至今已有15年的歷史。
什么是HTTP請(qǐng)求走私?
HTTP請(qǐng)求走私(或HTTP異步)是一種用于干擾網(wǎng)站處理、從一個(gè)或多個(gè)用戶接收的HTTP請(qǐng)求序列的方式的技術(shù)。
當(dāng)前端服務(wù)器(負(fù)載平衡器或代理)和后端服務(wù)器以不同的方式處理HTTP請(qǐng)求的邊界時(shí),通常會(huì)出現(xiàn)與HTTP請(qǐng)求走私有關(guān)的漏洞,從而使不良行為者發(fā)送優(yōu)先于下一個(gè)合法用戶請(qǐng)求歧義請(qǐng)求。
不同步的請(qǐng)求可被利用來(lái)劫持憑據(jù),向用戶注入響應(yīng);甚至從受害者的請(qǐng)求中竊取數(shù)據(jù),將信息泄露給攻擊者控制的服務(wù)器。
這項(xiàng)技術(shù)是由Watchfire的一組研究人員于2005 年首次證明的,這些研究人員包括Klein,Chaim Linhart,Ronen Heled和Steve Orrin。
但是在過(guò)去的十幾年中,在攻擊面也隨之進(jìn)行了擴(kuò)展,例如:將請(qǐng)求拼接成其他請(qǐng)求,獲得對(duì)內(nèi)部API的最大權(quán)限訪問(wèn);污染W(wǎng)eb緩存;破壞流行應(yīng)用程序的登錄頁(yè)面。
什么是新的?
Klein公開(kāi)的新變體涉及使用各種代理服務(wù)器組合,包括在Web服務(wù)器模式下的Aprelium的Abyss,Microsoft IIS,Apache和Tomcat,以及在HTTP代理模式下的Nginx,Squid,HAProxy,Caddy和Traefik。
所有四個(gè)新變體的列表如下,最后添加包括一個(gè)由研究人員在實(shí)驗(yàn)中成功利用的舊變體。
變體1:“標(biāo)頭SP / CR垃圾郵件:……”
變式2 –“等待”
變體3 – HTTP / 1.2繞過(guò)類似于mod_security的防御
變式4 –一個(gè)簡(jiǎn)單的解決方案
變式5 –“ CR標(biāo)頭”
例如,在處理包含兩個(gè)Content-Length標(biāo)頭字段的HTTP請(qǐng)求時(shí),發(fā)現(xiàn)Abyss接受第二個(gè)標(biāo)頭為有效,而Squid使用第一個(gè)Content-Length標(biāo)頭,從而導(dǎo)致兩個(gè)服務(wù)器以不同的方式解釋請(qǐng)求并實(shí)現(xiàn)請(qǐng)求走私。
在Abyss收到長(zhǎng)度小于指定的Content-Length值的主體的HTTP請(qǐng)求的情況下,它將等待30秒以完成該請(qǐng)求,但不會(huì)忽略該請(qǐng)求的其余主體。
Klein發(fā)現(xiàn),這也導(dǎo)致Squid與Abyss之間存在差異,后者會(huì)將HTTP請(qǐng)求的部分解釋為第二個(gè)請(qǐng)求。
攻擊的第三種形式使用HTTP / 1.2來(lái)規(guī)避OWASP ModSecurity中定義的WAF防御用于防止HTTP請(qǐng)求走私攻擊的核心規(guī)則集(CRS)會(huì)生成觸發(fā)該行為的惡意有效負(fù)載。
最后,克萊因(Klein)發(fā)現(xiàn)使用“ Content-Type:text / plain”標(biāo)頭字段足以繞過(guò)CRS中指定的級(jí)別檢查,并產(chǎn)生HTTP請(qǐng)求走私漏洞。
有哪些可能的防御措施?
在將發(fā)現(xiàn)披露給Aprelium,Squid和OWASP CRS之后,問(wèn)題已在Abyss X1 v2.14,Squid版本4.12和5.0.3和CRS v3.3.0中修復(fù)。
呼吁規(guī)范來(lái)自代理服務(wù)器的出站HTTP請(qǐng)求,Klein強(qiáng)調(diào)了對(duì)開(kāi)源、應(yīng)用要求硬核的Web應(yīng)用程序防火墻解決方案的需求,該解決方案能夠處理HTTP請(qǐng)求走私攻擊。
Klein指出:“ ModSecurity(與CRS結(jié)合使用)確實(shí)是一個(gè)開(kāi)源項(xiàng)目,但是就通用性而言,Mod Security具有多個(gè)缺點(diǎn)。” “它不能提供針對(duì)HTTP請(qǐng)求走私的全面保護(hù),并且僅可用于Apache,IIS和nginx。”
為此,Klein發(fā)布了一個(gè)基于C++的庫(kù),通過(guò)嚴(yán)格遵守HTTP標(biāo)頭格式和請(qǐng)求行格式來(lái)確保所有傳入的HTTP請(qǐng)求是完全合規(guī)且明確的。可以從GitHub訪問(wèn)它。