“Apache杀手”一种利用Range HTTP头域的DDoS

admin 13年前
     <p> 2007 年,Google 工程师 Michael Zalewski 在研究了 <a href="/misc/goto?guid=4958191199706661666">HTTP/1.1 Range 头域</a>的实现后,<a href="/misc/goto?guid=4958191200502341659">发表了一篇备忘</a>,详细说明了 Apache 和 IIS 网页服务器中存在的一个潜在漏洞。<img title="apache.jpg" border="0" alt="apache.jpg" align="right" src="https://simg.open-open.com/show/f96b0e44fdf28867b5c43f8773049f7f.jpg" width="150" height="69" /></p>    <blockquote>     在我印象中,一个单独的、短的请求就可用来诱使服务器无目的地地发出数以 GB 的伪数据,而不顾服务器文件大小、连接数以及管理员设定的持续(keep-alive)请求数的限制。    </blockquote>    <p> 8 月 19 号,“<a href="/misc/goto?guid=4958191201248509497">Full Disclosure</a>”安全邮件列表中发布了一段 Apache DDoS 工具原型的 Perl 脚本。8月 24 号,Apache 安全小组就此<a href="http://marc.info/?l=apache-httpd-dev&m=131418828705324&w=2">发表了一篇备忘进行解释</a>:</p>    <blockquote>     <p>它最常见地表现在静态内容生成且通过 mod_deflate 模块进行压缩的时候,但其它在内存中缓存或生成内容的模块也可能会受到影响。这是一种非常普遍(缺省的,不是么?)的配置方式。</p>     <p>攻击可以远程进行,并且中等数量的请求就会导致内存和 CPU 占用率显著提高。</p>     <p>我们注意到该工具已经得到越来越多的应用。</p>     <p>目前还没有修复该漏洞的补丁和新版本的 apache,因此本公告将在长期修复补丁发布时更新。修复补丁预计将在接下来的 96 小时内发布。</p>    </blockquote>    <p> 星期五,Apache<a href="/misc/goto?guid=4958191202728183784">发布了第二则公告</a>,其中他们解释了当服务器处理请求以返回多个(重叠的)范围时,Apache httpd 进程和它所谓的内部“桶队列(bucket brigades)”是如何按照请求的顺序进行处理的。单个请求可以请求非常大的范围(例如从字节 0 到结尾),差距达到 100 倍。目前,这种类型的请求内部会扩展相当于 100 次大型的取指令操作,所有这些都以低效率的方式保存在内存中。</p>    <blockquote>     处理方式有两种,要么使事情更有效率,要么清除或者简化被认为过于笨重的请求。在最终修复方案出来前有几种直接选择可缓解这一状况。    </blockquote>    <p> Apache 提出的缓解措施包括从完全禁止 Range 头域到限制请求包的大小及部署定制的 Range 计数模块。Lori MacVittie<a href="/misc/goto?guid=4958191203474576735">详细说明了如何通过使用 Big-IP 来实现缓解措施</a>。</p>    <p> <strong>查看英文原文</strong>:<a href="/misc/goto?guid=4958191204218697413">"Apache Killer" a DDoS using the Range HTTP Header</a><br />      来自: <a id="link_source2" href="/misc/goto?guid=4958191204947804525" target="_blank">InfoQ</a></p>