“Apache殺手”一種利用Range HTTP頭域的DDoS
2007 年,Google 工程師 Michael Zalewski 在研究了 HTTP/1.1 Range 頭域的實現后,發表了一篇備忘,詳細說明了 Apache 和 IIS 網頁服務器中存在的一個潛在漏洞。
在我印象中,一個單獨的、短的請求就可用來誘使服務器無目的地地發出數以 GB 的偽數據,而不顧服務器文件大小、連接數以及管理員設定的持續(keep-alive)請求數的限制。
8 月 19 號,“Full Disclosure”安全郵件列表中發布了一段 Apache DDoS 工具原型的 Perl 腳本。8月 24 號,Apache 安全小組就此發表了一篇備忘進行解釋:
它最常見地表現在靜態內容生成且通過 mod_deflate 模塊進行壓縮的時候,但其它在內存中緩存或生成內容的模塊也可能會受到影響。這是一種非常普遍(缺省的,不是么?)的配置方式。
攻擊可以遠程進行,并且中等數量的請求就會導致內存和 CPU 占用率顯著提高。
我們注意到該工具已經得到越來越多的應用。
目前還沒有修復該漏洞的補丁和新版本的 apache,因此本公告將在長期修復補丁發布時更新。修復補丁預計將在接下來的 96 小時內發布。
星期五,Apache發布了第二則公告,其中他們解釋了當服務器處理請求以返回多個(重疊的)范圍時,Apache httpd 進程和它所謂的內部“桶隊列(bucket brigades)”是如何按照請求的順序進行處理的。單個請求可以請求非常大的范圍(例如從字節 0 到結尾),差距達到 100 倍。目前,這種類型的請求內部會擴展相當于 100 次大型的取指令操作,所有這些都以低效率的方式保存在內存中。
處理方式有兩種,要么使事情更有效率,要么清除或者簡化被認為過于笨重的請求。在最終修復方案出來前有幾種直接選擇可緩解這一狀況。
Apache 提出的緩解措施包括從完全禁止 Range 頭域到限制請求包的大小及部署定制的 Range 計數模塊。Lori MacVittie詳細說明了如何通過使用 Big-IP 來實現緩解措施。
查看英文原文:"Apache Killer" a DDoS using the Range HTTP Header
來自: InfoQ