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.
- Anzeige Hier geht es zum Handbuch für Softwareentwickler bei Amazon Wenn Sie auf diesen Link klicken und darüber einkaufen, erhält Golem eine kleine Provision. Dies ändert nichts am Preis der Artikel.



