0-Day-Exploit: "Apache Killer" friert Webserver ein

Der in Perl geschriebene Proof-of-Concept "Apache Killer" wurde bereits auf Full Disclosure veröffentlicht(öffnet im neuen Fenster) . Das Script baut mehrere HTTP-Verbindungen zu einem Zielsystem auf und sendet HEAD-Anfragen mit einem 1300 Intervalle umfassenden Byte-Ranges-Header(öffnet im neuen Fenster) :
HEAD / HTTP/1.1
Host: ziel.host.tld
Range:bytes=0-,5-0,5-1,5-2,5-3,5-4,5-5 [...] 5-1297,5-1298,5-1299
Byte Ranges werden im Standard-HTTP 1.1 verwendet, um Teile einer Datei, zum Beispiel zum Fortsetzen eines abgebrochenen Downloads, ausliefern zu lassen. Der Apache-Webserver verbraucht beim offenbar fehlerhaften Parsen der unüblich komplexen Byte-Range-Anfragen innerhalb kurzer Zeit große Teile des Arbeitsspeichers. In unserem Test konnten verschiedene Apache-Versionen auf aktuellen Ubuntu- und Debian-basierten Webservern in wenigen Sekunden zum Stillstand gebracht werden. Die betroffenen Systeme froren vollständig ein und waren auch per SSH nicht mehr ansprechbar.
Gegenmaßnahmen
Bis das Apache-Team offizielle Patches bereitstellt und diese von den Distributionen ausgeliefert werden, gibt es kaum Möglichkeiten, einem erfolgreichen Angriff vorzubeugen. Als Workaround wird das Filtern von mehrstufigen Byte-Range-Anfragen per mod_rewrite vorgeschlagen(öffnet im neuen Fenster) . Beim Zulassen nur weniger Byte Ranges sollten die meisten Webanwendungen weiterhin funktionieren.
Gravierender ist die komplette Filterung des Range-Headers durch das mod_header-Modul(öffnet im neuen Fenster) . Bei beiden Methoden muss im Einzelfall geprüft werden, welche Auswirkungen das auf die jeweilige Webseite hat. Insbesondere das Ausliefern größerer Dateien/Medien (Progressive Download) und WebDAV kann durch die Änderungen negativ beeinflusst werden.
Eine weitere Alternative ist das Vorschalten eines Reverse-Proxy-Servers, der entsprechende Anfragen direkt bedient oder filtert.
Die Apache-Entwickler warnen mittlerweile selbst vor dem Problem(öffnet im neuen Fenster) , das nach ihrer Erkenntnis bereits aktiv ausgenutzt wird. Eine neue, korrigierte Version des Apache-Webservers soll innerhalb von 48 Stunden veröffentlicht werden.
Nachtrag vom 24. August 2011, 21:15 Uhr
Im Skript wird ein HEAD-Request statt eines GET-Requests verwendet. Laut Mailinglisten ist Apache aber durch beide Requests gefährdet. Für einen Angriff ist HEAD die schnellere Variante, da weniger Daten vom Server zum Client gesendet werden.



