SECURITY: Tool bringt Apache-Webserver zum Stillstand

  • Hallo zusammen....


    falls es noch nicht zu euch vorgedrungen ist hier einmal eine wichtige Info vom derzeitigen Heise Newsletter:


    "Tool bringt Apache-Webserver zum Stillstand"


    Ein bislang unbekannter Fehler in der Verarbeitung von Byte-Range-Headern lässt sich ausnutzen, um mit einem einzigen PC einen Apache-Webserver 2.2 zum Stillstand zu bringen. Auf der Mailing-Liste Full Disclosure ist dafür das Perl-Skript "Apache Killer" erschienen, das das Problem eindrucksvoll demonstriert.
    Das Tool sendet GET-Requests mit mehreren "Byte Ranges", die zu einer sehr hohen Speicherbelegung des Systems führen. Die Angabe von "Bytes Ranges" ermöglichen dem Browser, etwa bestimmte Teile eines Dokuments nur teilweise zu laden, etwa die Bytes 500 bis 1000. Auf diese Weise knüpfen etwa auch Download-Clients an abgebrochene Downloads an. Das soll den Bandbreitenverbrauch verringern. Die Angabe mehrerer Teile im Header in unsortierter Folge bringen aber den Apache offenbar aus dem Tritt.
    Einen offiziellen Patch gibt es noch nicht, als Workaround funktionieren jedoch Rewrite-Regeln, die nur noch einen einzigen Range-Requests in GET und HEAD-Headern erlauben. Für die meisten Anwendungen sollte das kein Problem sein. Um die Regeln zu aktivieren, müssen Administratoren das Modul mod_rewrite im Apache-Webserver laden.
    Alternativ soll es auch helfen, über das Modul mod_header und die Konfiguration
    RequestHeader unset Range im Header enthaltene Range-Requests komplett zu löschen. Vermutlich dürfte dies aber zu größeren Problem führen, als die Anzahl der Ranges zu beschränken. Admins sollten mit dem Tool die Wirksamkeit ihrer Maßnahmen prüfen, bevor es andere tun.



    Wichtig...der "erste" Workaround greift wohl nur bedingt. Mit einigen Anpassungen des Exploid Scripts kann der Apache weiter zum kochen gebracht werden.


    Deswegen hier ein Update der ReWrite Rules:


    Update: Anscheinend sind die verlinkten Rewrite-Regeln ungenügend. Sie verhindern zwar die geschilderten Angriffe, diese lassen sich jedoch auch über RequestRange-Header durchführen. Ein erweiterter Regelsatz könnte etwas wie diese Regeln enthalten:


    Apache Configuration
    RewriteEngine On 
    RewriteCond %{REQUEST_METHOD} ^(HEAD|GET) [NC] 
    RewriteCond %{HTTP:Range} ([0-9]*-[0-9]*)(\s*,\s*[0-9]*-[0-9]*)+ [OR] 
    RewriteCond %{HTTP:Request-Range} ([0-9]*-[0-9]*)(\s*,\s*[0-9]*-[0-9]*)+ 
    RewriteRule .* - [F]


    Einfach in die VHosts mit rein und den Apache restarteten...dann sollte es "save" sein.
    Testen kann man dies wohl wie folgt:


    Code
    curl -I -H 'Range: bytes=0-0,0-1,1-2' http://<deine domain>/<einen static-content.jpg>


    Hierbei sollte ein 403 Forbidden zurück geliefert werden.

  • Wirklich stören tut es mein Debian Squeeze System nicht. Es werkelt dann mit ca. 80% Ram Auslastung und viel CPU Power herum, aber abstürzen oder nicht mehr erreichbar sein scheint dabei kein Thema zu sein. Das gleiche schaffe ich mit ab und nur wenigen Verbindungen auch :D



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Also wir haben es auf meinen VServer mit Ubuntu Lucid mal losgelassen und der war innerhalb von 3 Sekunden nicht mehr wirklich ansprechbar. Die SSH Verbindung war auch mehr als lahm...ich konnte nur noch ein Reboot machen. Ganz trivial find ich diese "Lücke" deswegen nicht. Und auch auf Arbeit (T-Konzern) werden alle wichtigen Systeme mit der ReWrite Rule versehen.

  • Ganz trivial find ich diese "Lücke" deswegen nicht.


    Das wollte ich damit auch nicht aussagen, aber ich kann es aktuell bei mir nicht vollständig reproduzieren.


    Wie viel Ram/CPU hatte der vServer eigentlich?



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Eventuell sind einfach die Worker Limits zu hoch gesetzt, dass der Apache bei so vielen gleichzeitigen Anfragen sowie swappen würde und das ganze System runter zieht?



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • An der Apacheconfig selbst hab ich nicht sooo viel rumgeschraubt...das meiste auf Default gelassen. Aber ja der fängt relativ schnell an zu swappen und zieht damit das gesamt System in den Keller. Aber auch die fetten Server auf Arbeit (wie gesagt ich bin im T-Konzern beschäftigt. ^^) haben das gleiche Verhalten gezeigt. Von daher kann ichs nur empfehlen die Rules zu setzten. ;)

  • Sehr gut! :)


    Aber weiß schon jemand wann der Patch in den Ubuntu-Quellen verfügbar ist?
    Ich hab eben mal ein apt-get upgrade gemacht und von Apache keine Spur...es gab nur:
    The following packages will be upgraded:
    dhcp3-client dhcp3-common


    :-/