CPDoS 攻擊使透過 CDN 提供的頁面無法使用

來自漢堡大學和科隆大學的研究人員
發達 針對內容交付網路和快取代理的新攻擊技術 - CPDoS (緩存中毒的拒絕服務)。該攻擊允許透過緩存中毒來拒絕對頁面的存取。

該問題是由於 CDN 不僅快取成功完成的請求,還快取 http 伺服器回傳錯誤的情況。通常,如果形成請求時出現問題,伺服器會發出 400(錯誤請求)錯誤;唯一的例外是 IIS,它會因標頭太大而發出 404(未找到)錯誤。此標準僅允許快取代碼為404(未找到)、405(不允許的方法)、410(已消失)和501(未實現)的錯誤,但某些CDN 也快取代碼為400(錯誤請求)的回應,取決於關於發送的請求。

攻擊者可以透過發送帶有某種格式的 HTTP 標頭的請求,導致原始資源傳回「400 Bad Request」錯誤。 CDN 不會考慮這些標頭,因此有關無法訪問頁面的資訊將被緩存,並且超時到期之前的所有其他有效用戶請求可能會導致錯誤,儘管原始網站提供內容沒有任何問題。

已經提出了三種攻擊選項來強制 HTTP 伺服器回傳錯誤:

  • HMO(HTTP Method Override)-攻擊者可以透過「X-HTTP-Method-Override」、「X-HTTP-Method」或「X-Method-Override」標頭來覆蓋原始請求方法,某些伺服器支持,但是在CDN中沒有考慮到。例如,原來的「GET」方法可以改為伺服器上禁止的「DELETE」方法,或是不適用於靜態的「POST」方法;

    CPDoS 攻擊使透過 CDN 提供的頁面無法使用

  • HHO(HTTP 標頭過大) - 攻擊者可以選擇標頭大小,使其超出來源伺服器的限制,但又不屬於 CDN 限制。例如,Apache httpd 將標頭大小限制為 8 KB,而 Amazon Cloudfront CDN 允許標頭最大為 20 KB;
    CPDoS 攻擊使透過 CDN 提供的頁面無法使用

  • HMC(HTTP 元字元)-攻擊者可以在請求中插入特殊字元(\n、\r、\a),這些字元在來源伺服器上被視為無效,但在 CDN 中會被忽略。

    CPDoS 攻擊使透過 CDN 提供的頁面無法使用

最容易受到攻擊的是 Amazon Web Services (AWS) 所使用的 CloudFront CDN。亞馬遜現在已透過停用錯誤快取解決了這個問題,但研究人員花了三個多月的時間才添加保護。該問題也影響了 Cloudflare、Varnish、Akamai、CDN77 和
速度很快,但透過它們進行的攻擊僅限於使用 IIS、ASP.NET、 長頸瓶 и 播放1. 著名的,美國國防部的 11% 網域、HTTP Archive 資料庫中的 16% 的 URL 以及 Alexa 排名的 30 個最大網站中的約 500% 可能會受到攻擊。

作為阻止網站端攻擊的解決方法,您可以使用「Cache-Control: no-store」標頭,該標頭禁止回應快取。在某些 CDN 中,例如
CloudFront 和 Akamai,您可以在設定檔設定層級停用錯誤快取。為了保護,也可以使用Web應用防火牆(WAF,Web Application Firewall),但它們必須實現在快取主機前面的CDN側。

來源: opennet.ru

添加評論