eEye Digital Security eEye Digital Security
  • Login to the eEye Business Client Portal
  • Shop for eEye Products
  • Read the eEye Blog
  • Subscribe to eEye RSS Feeds
  • Follow eEye on Twitter
  • Follow eEye of Facebook
Resources

Research > Zero-Day Tracker > 20110819

Apache httpd Remote Denial of Service (Memory Exhaustion)

Date Disclosed:
8/19/2011

Date Patched:
8.30.2011

Vendor:
Apache Software Foundation

Affected Software:
Apache 1.3.x and 2.x

Description:
Apache contains a vulnerability within httpd when handling HTTP range requests. Successful exploitation could allow an attacker to create a denial of service condition on a server running Apache.

Severity:
High

Code Execution:
No

Impact:

Denial of Service Condition
This vulnerability could allow an attacker to cause a denial of service condition against a target, rendering the software or the entire machine inoperable.

Mitigation:

Use SetEnvIf or mod_rewrite to detect a large number of ranges and then
either ignore the Range: header or reject the request.
 
Option 1: (Apache 2.2)
  # Drop the Range header when more than 5 ranges.
  # CVE-2011-3192
  SetEnvIf Range (?:,.*?){5,5} bad-range=1
  RequestHeader unset Range env=bad-range

  # We always drop Request-Range; as this is a legacy
  # dating back to MSIE3 and Netscape 2 and 3.
  RequestHeader unset Request-Range
  # optional logging.
  CustomLog logs/range-CVE-2011-3192.log common env=bad-range
  CustomLog logs/range-CVE-2011-3192.log common env=bad-req-range
Above may not work for all configurations. In particular situations
mod_cache and (language) modules may act before the 'unset'
is executed upon during the 'fixup' phase.
 
Option 2: (Pre 2.2 and 1.3)
  # Reject request when more than 5 ranges in the Range: header.
  # CVE-2011-3192
  #
  RewriteEngine on
  RewriteCond %{HTTP:range} !(bytes=[^,]+(,[^,]+){0,4}$|^$)
  # RewriteCond %{HTTP:request-range} !(bytes=[^,]+(?:,[^,]+){0,4}$|^$)
  RewriteRule .* - [F]

  # We always drop Request-Range; as this is a legacy
  # dating back to MSIE3 and Netscape 2 and 3.
  RequestHeader unset Request-Range
The number 5 is arbitrary. Several 10's should not be an issue and may be
required for sites which for example serve PDFs to very high end eReaders
or use things such complex http based video streaming.

See this mail post for more information.

Protection:
 

Links:

Status:
8.19.11 - Public information Released

Copyright ©1998-2011 eEye Digital Security
Permission is hereby granted for the redistribution of this alert electronically. It is not to be edited in any way without express consent of eEye. If you wish to reprint the whole or any part of this alert in any other medium excluding electronic medium, please email alert@eEye.com for permission.

Disclaimer
The information within this paper may change without notice. Use of this information constitutes acceptance for use in an AS IS condition. There are no warranties, implied or express, with regard to this information. In no event shall the author be liable for any direct or indirect damages whatsoever arising out of or in connection with the use or spread of this information. Any use of this information is at the user's own risk.

Next Steps

Free Trial
Test drive an eEye product
On-demand Demo
See an online product tour
One-on-one Demo
Schedule a personalized tour
Compare Products
See side-by-side features
Buy Now
Go to eEye product store
Contact | Site Map | Privacy | Website Feedback | 1.866.339.3732
© 1998 – 2012 eEye Digital Security. All rights reserved.