Apache gegen Apachekiller wappnen

Eine Lücke im Webserver Apache, die in allen Versionen bis 2.2.18 enthalten ist, kann dazu ausgenutzt werden, das komplette System lahmzulegen. Weitere Informationen dazu findet man unter anderem bei Golem. Maßnahmen, die die Ausnutzung der Lücke verhindern, sind in einem Apache Security Advisory aufgeführt.

Nachdem es noch nicht  von allen Distributoren entsprechende Aktualisierungen gibt, hier eine kurze Anleitung, wie man die Lücke provisorisch flicken kann – exemplarisch am Beispiel SLES:

  • Überprüfen, ob der Apache das headers-Modul geladen hat. Geladene Module bekommt man mit apache2ctl -M, einkompilierte Module mit apache2ctl -l.
  • Sollte es nicht geladen sein, es zur Liste der zu ladenden Module hinzufügen. Bei SLES fügt man dazu in der Datei /etc/sysconfig/apache2 der Variablen APACHE_MODULES den Wert headers hinzu. Weniger SuSE-spezifisch sollte das mit a2enmod headers funktionieren. Im Zweifelsfall konsultieren Sie die Dokumentation Ihrer Distribution.
  • Für die nötigen zusätzlichen Konfigurationsdirektiven eine Datei erstellen, beispielsweise /etc/apache2/apk-workaround.conf. Diese sollte nun folgenden Inhalt haben:
    • Für Apache 2.0:
      # Drop the Range header when more than 10 ranges.
      # CVE-2011-3192
      SetEnvIf Range (,.*?){10,} bad-range=1
      RequestHeader set Range "badrange" env=bad-range
    • Für Apache 2.2:
      # Drop the Range header when more than 10 ranges.
      # CVE-2011-3192
      SetEnvIf Range (,.*?){10,} bad-range=1
      RequestHeader unset Range env=bad-range
  • Die erstellte Datei muss nun in die Apache-Konfiguration eingebunden werden. Unter SLES ergänzt man hierzu in der Datei /etc/sysconfig/apache2 die Variable APACHE_CONF_INCLUDE_FILES um den Wert /etc/apache2/apk-workaround.conf. Das sorgt dafür, dass die oben erstellte Datei eingebunden wird. Manuell erreicht man das mit der Zeile
    Include /etc/apache2/apk-workaround.conf
    in der httpd.conf.
  • Als letzte Schritte noch die Konfiguration auf korrekte Syntax überprüfen und den Webserver neu starten:
    • apache2ctl configtest
    • /etc/init.d/apache2 stop
    • /etc/init.d/apache2 start