Apache-Dienst kann gesamten Server blockieren

ApacheMomentan besteht eine Verwundbarkeit des bekannten Apache Webservers unter Linux. Es können bestimmte Anfragen an den Server gesendet werden, die ihn ao auslasten, das andere Dienste auf dem gleichen Server ausfallen.

Auslöser ist eine für den Download großer Datenmengen gedachte Funktion, bei der der Browser vom Server spezielle Dateiblöcke über den „Range“ Header-Request anfordert. Die Funktion wurde entwickelt, um dem anfragenden Browser zu ermöglichen, einen abgebrochenen Download ab einer bestimmten Stelle neu zu beginnen.

Über viele nacheinander abgesetzte Anforderungen auf verschiedene Ranges führt das im jetzigen Szenario zu einem Denial-of-Service durch die Belegung des gesamten Speichers.

 

Es existiert derzeit noch kein entsprechender Sicherheits-Patch, es sind jedoch momentan mindestens zwei Workarounds verfügbar. VICO hat beide getestet, einer davon scheint aber nicht sicher zu funktionieren. Es hat sich hier gezeigt, dass ein Filtern mit Regular Expressions nicht sicher greift, zumal es bestimmt sehr bald zu Variationen des öffentlich verfügbaren verfügbaren Angriffsskripts kommen wird.

 

Hier funktioniert der folgende Workaround, für den allerdings Administratorrechte für den Server notwendig sind:

Prüfen ob der Apache-Server das Modul „mod_headers“, bzw. „headers“ bereits geladen hat.

Wenn ja, muss in die Konfigurationsdatei apache.conf nur eine einzelne Zeile: RequestHeader unset Range

Wichtig hierbei ist, dass diese Zeile unter der Include-Zeile stehen muss, in der die Module geladen werden!

Sollte das Modul nicht geladen sein, muss ein symbolischer Link der verfügbaren Module in die zu aktivierenden Module gesetzt werden: ln -s /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled/headers.load

 

Danach auf jeden Fall den Apache-Dienst neu starten lassen: apache2ctl restart

(Diese Pfade können in Ihrer aktuellen Installation anders lauten. Bitte vorher prüfen!)

In Umgebungen mit vielen virtuellen Webservern muss geprüft werden, ob es in den jeweiligen <VirtualHost>-Direktiven der einzelnen Server nicht eine gegensätzliche Einstellung gibt! Diese haben Vorrang vor der globalen Konfiguration.

 

Durch diese Anweisung ignoriert der Server die entsprechende Anforderung nach einem bestimmten Datei-Range. Er liefert dann zwar immer gnadenlos die gesamte Datei zurück, überlebt den Angriff aber zumindest unbeschadet.

 

(Alle Informationen basieren auf den bei VICO eingesetzten Standard-System unter Debian ‚Lenny‘ und ‚Sqeeze‘. Eine generelle Funktionsgarantie kann nicht gegeben werden. Vor dem Einsatz in Produktivsystemen bitte auch Abhängigkeiten zu anderer Software und anderen Diensten prüfen!)