新的Web緩存系統中毒攻擊

新的Web緩存系統中毒攻擊, 使用CDN(內容傳遞網路)的站點

有關新的Web緩存中毒攻擊的詳細信息已經出現,這些攻擊可用於拒絕用戶訪問通過內容傳遞網路(CDN)分發的資源。

該新方法名為“緩存中毒拒絕服務(CPDoS)”,它具有多種變體,可以通過發送帶有格式錯誤的標頭的HTTP請求來工作。

通過緩存服務器進行DoS

CDN具有通過緩存客戶端經常請求的資源來減少使用其服務的原始伺服器上的通信量的特性。這樣做的直接效果是提高了性能。

CDN體系結構中的緩存系統通常分散在較大的地理區域中,以實現更好的分發,它存儲源伺服器中資源的最新版本,並在客戶端請求時將其交付給客戶端。

這些中間系統處理請求並將其轉發到目的地,等待回應和資源的新版本(如果存在)。使用標識新變體的緩存鍵可以確定資源的新鮮度。

CPDoSCDN的中間緩存系統級別工作,該緩存系統接收並存儲由錯誤的HTTP請求標頭引起的錯誤頁面。

結果,嘗試訪問相同資源的用戶將收到緩存的錯誤頁面,因為這是原始伺服器在請求後返回的帶有錯誤標頭的內容。

CPDoS_01.png

攻擊的變化

Cologne大學應用科學和德國漢堡大學的Hoai Viet NguyenLuigi Lo IaconoHannes Federrath描述了CPDoS攻擊的三種變化:

HTTP標頭超大Header OversizeHHO

HTTP元字符Meta CharacterHMC

HTTP方法覆蓋Method OverrideHMO

使用HHO類型的CPDoS攻擊,威脅參與者會利用為HTTP請求標頭設置的大小限制中間系統和Web伺服器。

如果緩存系統接受的請求標頭大小大於原始伺服器定義的請求標頭大小,則攻擊者可以使用超大請求密鑰或多個標頭來製作請求。

在這種情況下,緩存將轉發帶有多個標頭的請求,並且網

路伺服器將阻止該請求,並返回一個400 Bad Request錯誤頁面,該頁面將被緩存。以後對相同資源的請求將獲得錯誤頁面。

CPDoS_02.png

為了更好地說明這種情況,研究人員製作了一個視頻,目標是託管在Amazon CloudFront上的應用程式。

在攻擊過程中,錯誤頁面將有選擇地替換資源,直到整個網頁都不可用為止。

HTTP元字符(HMC),CPDoS攻擊的第二種變體與HHO類似,但利用了有害的元字符。這些是任何“控製字符,例如中斷/回車符(‘\ n,換行符(‘\ r’)或鈴聲(‘\ a’)”。

再次,高速緩存系統執行其工作並轉發從客戶端收到的請求。當它到達源伺服器時,它可能被分類為惡意程式,並生成一條錯誤消息,該消息被緩存並呈現給客戶端而不是所請求的資源。

CPDoS_03.png

該方法超越了攻擊(HMO),這是CPDoS的第三種變體,它從僅支持GETPOST HTTP請求方法的中間系統(例如代理,負載平衡器,緩存,防火牆)中獲利。

這轉化為阻止其他HTTP請求方法。一個提供Web應用程式指示信息以替換標頭中支持的HTTP方法的Web框架允許繞過安全策略並提供不同的安全策略,例如DELETE

CPDoS_04.png

在上圖中,GET請求被覆蓋,原始伺服器上的Web應用將其解釋為POST,並返回相應的回應。

“讓我們假設目標Web應用程式未對/index.html上的POST實現任何業務邏輯。在這種情況下,諸如Play Framework 1之類的Web框架會 回一條錯誤消息,狀態碼為404 Not Found。”

結果是該錯誤消息被緩存並用於/index.html資源的後續有效GET請求。

下面的視頻演示了CPDoS攻擊的這種變體,它使用Postman  工具測試Web服務來阻止對目標網站主頁的訪問。

影響深遠

CDN在較大的地理位置上運行,CPDoS攻擊生成的錯誤頁面可以到達多個緩存伺服器位置。

但是,研究人員發現,並非所有邊緣伺服器都受到此威脅的影響,並且某些客戶端仍將從原始服務器接收有效頁面。

在測試中,他們使用了TurboBytes Pulse(全局DNSHTTPtraceroute測試工具)和網站速度測量服務。

針對同一國家德國(法蘭克福)和(科隆)的目標發起的攻擊影響了整個歐洲和亞洲某些地區的緩存伺服器。

CPDoS_05.png

解決問題

這種DoS攻擊的標頭超大(HHO)和元字符(HHM)變體是可能的,因為它與標準HTTP實現有所不同,默認情況下,標準HTTP實現不允許存儲包含錯誤代碼的回應。

Web緩存標準只允許緩存錯誤代碼‘404 Not Found’‘405 Method Not Allowed’‘410 Gone’‘501 Not Implemented’,”研究人員在CPDoS的網站上寫道。

阻止DoS受到這些攻擊的最簡單方法是遵守HTTP標準並僅緩存上面定義的錯誤頁面。

但是,由於內容提供者使用更通用的狀態代碼,因此使用不適當的狀態代碼來處理錯誤也會啟用這些攻擊。例如,“ 400錯誤請求”用於聲明過大的標頭。正確的是“ 431請求標頭字段太大”,研究人員分析的任何系統都沒有緩存它。

針對HHOHHM CPDoS變體的全面解決方案是將錯誤頁面完全排除在緩存之外。

保護措施還包括在緩存前面設置Web應用程序防火牆(WAF),以捕獲試圖到達原始服務器的惡意內容。

存在於多個CDN上的問題

從三位學者進行的測試來看,亞馬遜的CloudFront CDN似乎最容易受到CPDoS威脅。

在研究人員測試的25個流量服務器和Web框架中,只有其中三個的HTTP實施不受CPDoS攻擊:Apache TSGoogle Cloud StorageSquid

下表顯示了此類Web緩存系統和HTTP實施的組合受此類拒絕服務的影響。

CPDoS_06.png

已將問題報告給受影響的各方,其中一些人發布了補丁或以其他式糾正了它們。

Microsoft更新了IIS Server的修復程式,並於6月發布了有關漏洞的詳細信息(CVE-2019-0941)。Play Framework還在1.5.31.4.6版本中針對HMO方法修補了其產品。

但是,並非所有供應商的反應都相同。與Flask開發人員進行了多次聯繫,但沒有回复,並且對CPDoS的彈性尚不清楚。

Amazon的安全團隊承認CloudFront的弱點,並在default的情況下停止使用狀態碼“ 400 Bad Request”緩存錯誤頁面。但是,研究人員說,溝通主要是一種方式,因為他們從未收到有關緩解進度的最新信息。

Hoai Viet NguyenLuigi Lo IaconoHannes Federrath在《您的緩存已下降:緩存中毒的拒絕服務攻擊》一文中詳細介紹了這種Web緩存中毒攻擊及其變化。

他們將在1114日於倫敦舉行的第26ACM Conference on Computer and Communications SecurityCCS)會議上發表該論文。

更新[10/23/2019]  CloudFlare回應BleepingComputer的評論請求說,它為影響其係統的CPDoS方法增加了緩解措施。

為了與HTTP方法覆蓋(HMO)對抗,該公司將特殊標頭添加到了存在這些標頭的緩存鍵中。“這確保了使用標頭發出的請求不會毒化沒有它們的請求的緩存內容。”

對於其他兩種方法(標頭超大(HHO)和元字符(HMC)),CloudFlare的系統不會緩存“ 400錯誤請求”頁面。

公司代表告訴BleepingComputer:“我們還沒有發現使用本文所述漏洞的大規模攻擊方法。”

Akamai今天發表了一篇文章,  說他們的緩存系統遵循標準的HTTP實施,並且不受CPDoS攻擊方法的影響。

但是,可以實現非標準配置,並允許緩存錯誤消息。該公司建議其客戶檢查設置的自定義是否會使他們的網站容易受到攻擊。

Source: http://spr.ly/60161yiAK