研究人員發現價值約 4 萬美元的 70 個 Web 快取中毒漏洞,涉及 GitHub、GitLab 等

snakesss發表於2022-01-12

近日,安全研究員 Iustin Ladunca(Youstin)針對包括一些高流量線上服務在內的許多網站進行了調研,結果發現了 70 個具有不同影響的快取中毒漏洞。

Web 快取中毒攻擊的目標是 Web 伺服器和客戶端裝置之間的中間儲存點,例如point-of-presence servers、代理和負載平衡器。中介機構通過儲存本地版本的 Web 內容來加快向 Web 客戶端的傳送速度,從而幫助提高網站的效能。Web 快取中毒攻擊會操縱快取伺服器的行為,以及它們如何響應客戶端的特定 URL 請求。

Ladunca稱自己從 2020 年 11 月開始研究Web 快取中毒,並談到:

“僅僅幾周後,我就發現了兩個新的快取中毒漏洞,這讓我意識到快取中毒的攻擊面有多大。” 在 Ladunca的一篇部落格中,他詳細介紹了自己是如何發現和報告 Web 快取漏洞的,其中包括 Apache Traffic Server、GitHub、GitLab、HackerOne 和 Cloudflare 以及其他伺服器。

“一個常見的模式是快取伺服器被配置為僅快取靜態檔案,這意味著攻擊僅限於靜態檔案,”ladunca 說。“即便如此,仍然會產生重大影響,因為現代網站嚴重依賴 JS和 CSS,而刪除這些檔案會真正影響應用程式的可用性。”

多個 Web 快取漏洞導致拒絕服務 (DoS) 攻擊。快取伺服器使用一些 headers作為 keys來儲存和檢索 URL 請求。通過在 unkeyed headers中使用無效值,ladunca 能夠強制伺服器快取錯誤響應,並在之後提供這些響應而不是原始內容,這將使客戶端無法訪問目標網頁。

“就所使用的技術而言,迄今為止最常見的是通過 unkeyed headers的 CP-DoS,這可能佔總發現的 80%,”Ladunca 說。其他 Web 快取中毒漏洞可能會導致跨站點指令碼 (XSS) 攻擊。

例如,一個漏洞可以強制快取伺服器將 JavaScript 檔案請求轉發到攻擊者控制的地址。在另一種情況下,ladunca 能夠將快取請求從一個主機重定向到另一個容易受到基於 DOM 的 XSS 攻擊的主機。

Ladunca 因其發現的 70 個 Web 快取漏洞而獲得了總計約 40,000 美元的漏洞賞金,同時也得到了有關保護 Web 快取伺服器的重要經驗。“我認為保護 CDN 免受快取中毒攻擊的一個好方法是禁用錯誤狀態程式碼的快取,這種緩解措施應該能阻止大部分 CP-DoS 攻擊,”Ladunca 表示。

研究人員還建議使用 PortSwigger 的 Param Miner,這是一個開源工具,可以識別隱藏的、未連結的引數。針對 Web 應用程式執行 Param Miner 可以幫助檢測可用於 Web 快取中毒的 unkeyed headers。

不過 Reddit 上有網友對 Ladunca 的建議進行了反駁:

“禁用錯誤狀態程式碼的快取”絕對不是一個可行的解決方案。如果禁用錯誤狀態程式碼的快取,處理錯誤響應的每個請求都會返回到 origin,從而有效地建立了一個錯誤率不斷增加的 DDoS 攻擊;這將使得 origin offline,直到有人干預。

相關文章