Apache HTTP Server畸形Range选项处理远程拒绝服务漏洞

2011-08-26T00:00:00
ID SSV:20899
Type seebug
Reporter Root
Modified 2011-08-26T00:00:00

Description

BUGTRAQ ID: 49303 CVE ID: CVE-2011-3192

Apache HTTP Server是Apache软件基金会的一个开放源代码的网页服务器,可以在大多数电脑操作系统中运行,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。

Apache HTTP Server在处理Range选项生成回应时存在漏洞,远程攻击者可能利用此漏洞通过发送恶意请求导致服务器失去响应,导致拒绝服务。

此漏洞源于Apache HTTP Server在处理Range头选项中包含的大量重叠范围指定命令时存在的问题,攻击者可通过发送到服务器的特制HTTTP请求耗尽系统资源,导致Apache失去响应,甚至造成操作系统资源耗尽。

Apache 2.x Apache 1.3 临时解决方法:

在厂商提供官方补丁或新版本软件之前,建议用户采用如下的配置方案之一以尽可能免受漏洞的影响:

  • 使用SetEnvIf配置命令来忽略畸形的Ranger选项,适用于Apache 2.0和2.2 。

    修改Apache的配置文件httpd.conf。

    去掉如下行的注释:

    LoadModule headers_module modules/mod_headers.so

    增加如下行的配置命令:

    SetEnvIf Range (,.*?){5,} bad-range=1 RequestHeader unset Range env=bad-range

    重启Apache服务器。

  • 安装启用mod_rewrite,设置规则过滤规则禁止带有畸形的Ranger选项的请求,适用于所有版本的 Apache 。

    修改Apache的配置文件httpd.conf。

    去掉如下行的注释:

    LoadModule rewrite_module modules/mod_rewrite.so

    加入如下的mod_rewrite的规则配置行:

    RewriteEngine on RewriteCond %{HTTP:range} !(^bytes=[^,]+(,[^,]+){0,4}$|^$) RewriteRule .* - [F]

    重启Apache服务器。

上述两种配置会禁止Range选项包含超过5个范围指定命令的请求,在通常应用场景中对Web应用应该不会有什么影响,如果Web应用提供PDF数据或流媒体信息,可能需要调整阈值到更大的数值。

厂商补丁:

Apache Group

目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.apache.org

                                        
                                            
                                                
SSV-ID: 20882
http://sebug.net/exploit/20882/