德國(guó)一組網(wǎng)絡(luò)安全研究人員發(fā)現(xiàn)了一種針對(duì)網(wǎng)絡(luò)緩存系統(tǒng)的新的緩存中毒攻擊,攻擊者可以利用這種攻擊迫使目標(biāo)網(wǎng)站向大多數(shù)訪問(wèn)者提供錯(cuò)誤頁(yè)面,而不是合法的內(nèi)容或資源。
這個(gè)問(wèn)題影響到Varnish等反向代理緩存系統(tǒng),以及一些廣泛使用的內(nèi)容分發(fā)網(wǎng)絡(luò)(CDNs)服務(wù),包括Amazon CloudFront、Cloudflare、Fastly、Akamai和CDN77。
簡(jiǎn)而言之,內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)是一組地理上分布的服務(wù)器,它們位于網(wǎng)站的原始服務(wù)器和訪問(wèn)者之間,以優(yōu)化網(wǎng)站的性能。
CDN服務(wù)只是簡(jiǎn)單地存儲(chǔ)/緩存來(lái)自源服務(wù)器的靜態(tài)文件(包括HTML頁(yè)面、java文件、樣式表、圖像和視頻),并更快地將它們交付給訪問(wèn)者,而無(wú)需一次又一次地返回到源服務(wù)器。
每個(gè)地理上分布的CDN服務(wù)器也共享緩存文件的副本,并根據(jù)其位置將其提供給訪問(wèn)者。
通常,在定義時(shí)間或手動(dòng)清除之后,CDN服務(wù)器通過(guò)從原始服務(wù)器檢索每個(gè)web頁(yè)面的新更新副本來(lái)刷新緩存,并將它們存儲(chǔ)起來(lái)以備將來(lái)的請(qǐng)求。
CPDoS攻擊是如何對(duì)付CDNs的?
這種攻擊被稱為CPDoS,是緩存中毒拒絕服務(wù)的縮寫。CDN中間服務(wù)器被錯(cuò)誤配置為緩存web資源或頁(yè)面,其中包含原始服務(wù)器返回的錯(cuò)誤響應(yīng)。
根據(jù)三位德國(guó)學(xué)者(Hoai Viet Nguyen、Luigi Lo Iacono和Hannes Federrath)的說(shuō)法,CPDoS攻擊僅通過(guò)發(fā)送一個(gè)包含格式錯(cuò)誤的標(biāo)頭的HTTP請(qǐng)求,就威脅到網(wǎng)站web資源的可用性。
“當(dāng)攻擊者可以為可緩存的資源生成HTTP請(qǐng)求時(shí),問(wèn)題就出現(xiàn)了,其中的請(qǐng)求包含不準(zhǔn)確的字段,這些字段被緩存系統(tǒng)忽略,但是在原始服務(wù)器處理時(shí)引發(fā)錯(cuò)誤!
CPDoS攻擊的工作原理:
遠(yuǎn)程攻擊者通過(guò)發(fā)送包含格式錯(cuò)誤的標(biāo)頭的HTTP請(qǐng)求來(lái)請(qǐng)求目標(biāo)網(wǎng)站的web頁(yè)面。
如果中間的CDN服務(wù)器沒(méi)有所請(qǐng)求資源的副本,它將把請(qǐng)求轉(zhuǎn)發(fā)給源web服務(wù)器,而源web服務(wù)器將由于格式錯(cuò)誤而崩潰。
因此,原始服務(wù)器隨后返回一個(gè)錯(cuò)誤頁(yè)面,該錯(cuò)誤頁(yè)面最終由緩存服務(wù)器存儲(chǔ),而不是由請(qǐng)求的資源存儲(chǔ),F(xiàn)在,每當(dāng)合法的訪問(wèn)者試圖獲取目標(biāo)資源時(shí),他們將獲得緩存的錯(cuò)誤頁(yè)面,而不是原始內(nèi)容。
CDN服務(wù)器也會(huì)將相同的錯(cuò)誤頁(yè)面?zhèn)鞑サ紺DN網(wǎng)絡(luò)的其他邊緣節(jié)點(diǎn),導(dǎo)致受害者網(wǎng)站的目標(biāo)資源不可用。
值得注意的是,一個(gè)簡(jiǎn)單的請(qǐng)求就足以用一個(gè)錯(cuò)誤頁(yè)面替換緩存中的真實(shí)內(nèi)容。這意味著這樣的請(qǐng)求仍然低于web應(yīng)用程序防火墻(WAFs)和DDoS保護(hù)的檢測(cè)閾值,特別是當(dāng)它們掃描大量不規(guī)則網(wǎng)絡(luò)流量時(shí)!
此外,可以利用cpdo來(lái)阻止通過(guò)緩存分發(fā)的補(bǔ)丁或固件更新,從而防止設(shè)備和軟件中的漏洞被修復(fù)。攻擊者還可以禁用關(guān)鍵任務(wù)網(wǎng)站(如網(wǎng)上銀行或官方政府網(wǎng)站)上的重要安全警報(bào)或消息!
3種CPDoS攻擊類型
要對(duì)CDNs執(zhí)行這種緩存中毒攻擊,有三種類型的HTTP請(qǐng)求:
HTTP頭文件大小過(guò)大(HHO)——在web應(yīng)用程序使用比原始服務(wù)器接受更大的頭文件大小限制的緩存的情況下,包含超大頭文件的HTTP請(qǐng)求。
HTTP元字符(HMC)——這種攻擊不發(fā)送過(guò)大的報(bào)頭,而是嘗試使用包含有害元字符的請(qǐng)求報(bào)頭繞過(guò)緩存,如換行/回車(\n)、換行(\r)或鈴聲(\a)。
HTTP方法覆蓋(HMO)——使用HTTP覆蓋頭繞過(guò)禁止刪除請(qǐng)求的安全策略。
易受CPDoS攻擊的CDN服務(wù)
研究人員針對(duì)web緩存系統(tǒng)和HTTP實(shí)現(xiàn)的不同組合進(jìn)行了三次攻擊,發(fā)現(xiàn)Amazon的CloudFront CDN最容易受到CPDoS攻擊。
測(cè)試結(jié)果如下:
該團(tuán)隊(duì)于2019年2月19日向受影響的HTTP實(shí)現(xiàn)供應(yīng)商和緩存提供商報(bào)告了他們的發(fā)現(xiàn)。
Amazon Web Services (AWS)團(tuán)隊(duì)確認(rèn)了CloudFront上的漏洞,并通過(guò)禁止在默認(rèn)情況下緩存狀態(tài)碼為400 Bad Request的錯(cuò)誤頁(yè)面解決了這個(gè)問(wèn)題。
微軟在其2019年6月的月度安全更新中也承認(rèn)了報(bào)告的問(wèn)題,并發(fā)布了一個(gè)更新來(lái)緩解這一漏洞,命名為CVE-2019-0941。
Play Framework還通過(guò)限制Play Framework版本1.5.3和1.4.6中X-HTTP-Method-Override頭文件的影響,確認(rèn)了報(bào)告的問(wèn)題,并為其產(chǎn)品打了針對(duì)CPDoS攻擊的補(bǔ)丁。
轉(zhuǎn)自The Hacker News,作者Swati Khandelwal
聲明:我們尊重原創(chuàng)者版權(quán),除確實(shí)無(wú)法確認(rèn)作者外,均會(huì)注明作者和來(lái)源。轉(zhuǎn)載文章僅供個(gè)人學(xué)習(xí)研究,同時(shí)向原創(chuàng)作者表示感謝,若涉及版權(quán)問(wèn)題,請(qǐng)及時(shí)聯(lián)系小編刪除!