RangeAmp - 一系列操縱 Range HTTP 標頭的 CDN 攻擊

來自北京大學、清華大學和德州大學達拉斯分校的研究團隊 透露 新型 DoS 攻擊 - RangeAmp,基於 HTTP 標頭的使用 範圍 透過內容傳遞網路 (CDN) 組織流量放大。 該方法的本質是,由於許多 CDN 中處理 Range 標頭的方式,攻擊者可以透過 CDN 請求大檔案中的一個字節,但 CDN 會從該檔案下載整個檔案或更大的資料區塊。要放置在快取中的目標伺服器。 此類攻擊期間的流量放大程度根據 CDN 的不同,範圍從 724 到 43330 倍不等,可用於使 CDN 的傳入流量過載或減少到受害者站點的最終通訊通道的容量。

RangeAmp - 一系列操縱 Range HTTP 標頭的 CDN 攻擊

Range 標頭可讓用戶端指定檔案中應下載的位置範圍,而不是傳回整個檔案。 例如,客戶端可以指定“Range: bytes=0-1023”,伺服器將只傳輸前 1024 個位元組的資料。 下載大檔案時需要此功能 - 用戶可以暫停下載,然後從中斷的位置繼續。 當指定“bytes=0-0”時,標準指示給出文件中的第一個位元組,“bytes=-1”-最後一個,“bytes=1-”-從1個位元組開始直到檔案末尾。 可以在一個標頭中傳輸多個範圍,例如“Range: bytes=0-1023,8192-10240”。

此外,還提出了第二種攻擊選項,旨在增加透過另一個用作代理的 CDN 轉送流量時的網路負載(例如,當 Cloudflare 充當前端 (FCDN)、Akamai 充當後端時 ( BCDN)。 此方法與第一種攻擊類似,但僅限於 CDN 網路內,並且在透過其他 CDN 存取時增加流量,從而增加基礎設施的負載並降低服務品質。

其想法是攻擊者向 CDN 發送多個範圍的 Range 請求,例如“bytes=0-,0-,0-...”、“bytes=1-,0-,0-...”或“字節=-1024,0-,0-...」。 請求中包含大量“0-”範圍,表示檔案從位置零返回到末尾。 由於範圍解析的實現不正確,當第一個CDN存取第二個CDN時,如果存在重複和範圍交集,則為每個「0-」範圍發送完整的檔案(範圍不是聚合的,而是順序迭代的)攻擊者最初發送的請求。 此類攻擊的流量放大程度為 53 至 7432 倍。

RangeAmp - 一系列操縱 Range HTTP 標頭的 CDN 攻擊

在研究過程中,研究了 13 個 CDN 的行為 -
Akamai、阿里雲、Azure、CDN77、CDNsun、Cloudflare、CloudFront、Fastly、G-Core Labs、華為雲、KeyCDN、StackPath 和騰訊雲。 所有檢查的 CDN 都允許對終端伺服器進行第一種類型的攻擊。 CDN 攻擊的第二種變體影響了 6 項服務,其中 77 項可以充當攻擊中的前端(CDN10、CDNsun、Cloudflare 和 StackPath),另外 7 項可以充當後端(Akamai、Azure 和 StackPath)。 Akamai 和 StackPath 獲得了最大的收益,它們允許在 Range 標頭中指定超過 12 個範圍。 CDN 所有者大約 13 個月前就收到了有關漏洞的通知,到資訊公開時,XNUMX 個 CDN 中有 XNUMX 個已經修復了發現的問題或表示準備修復這些問題(只有 StackPath 服務沒有回應)。

來源: opennet.ru

添加評論