Achtung Web-Developer und Web-Hoster! Seit kurzem ist eine DoS-Attacke gegen Webserver bekannt, die zur Überlastung von Websites führen kann. Die Verwundbarkeit läuft unter #hashDoS und #28C3, sie führt “hash collision attacks” gegen Websites durch.
Technisch gesehen werden durch einen HTTP Request “teure” Hash Table Berechnungen ausgeführt, die – selbst auf sehr leistungsfähigen CPU´s – abertausende Form-Werte berechnen und so zu einer Überlastung = Stillstand des Webservers führen können.
Selbst kleine HTTP-Requests können sehr rechenintensiv werden: Die Verwundbarkeit kann von anonymen Angreifern ausgenutzt werden, um in ASP.NET einen speziell präparierten HTTP-Request mit beispielsweise 100kB abzusetzen. Dieser Angriff kann eine CPU zu 100% auslasten und zwischen 90 und 110 Sekunden dauern. Durch mehrfache Wiederholung der Angriffe kann ein Stillstand erzeugt werden. (siehe 3.)
CPU-Grafik von 3. Hier liegt die CPU-Last eines 4-Core Servers kontinuierlich bei 25% – nur durch einen WorkerProcess. Weitere Informationen finden Sie in 4.
Eigentlich alle Webserver im Internet. Alle Versionen des .NET Frameworks sind verwundbar. (siehe 1.)
#hashDoS betrifft nicht nur Microsoft-Technologie (ASP.NET), sondern es sind alle Systeme gefährdet: Java, Python, Ruby 1.8, PHP, etc.
Verwundbar sind Windows-Systeme mit IIS-Rolle, wenn ASP.NET Websites mit diesen Content-Types (siehe 2.) verwendet werden:
Andernfalls droht keine Gefahr durch #hashDoS.
Eigentlich simpel – durch Limitierung des HTTP-Requests: Hier die Empfehlungen aus TechNet:
Wenn Ihre Applikation ViewState verwendet: In web.config die maximale HTTP-Request Größe auf 200KB beschränken:
<configuration> <system.web> <httpRuntime maxRequestLength="200"/> </system.web> </configuration>
Wenn kein ViewState verwendet wird: In web.config die maximale HTTP-Request Größe auf 20KB beschränken:
<configuration> <system.web> <httpRuntime maxRequestLength="20"/> </system.web> </configuration>
…abhängig vom Szenario. Nicht vergessen: Eventuelle File Uploads in der App!
Die Empfehlung: Wenn Sie befürchten, Ziel eines Angriffs durch #hashDoS zu werden, führen Sie obige Schritte durch. (siehe 3.)
Ein Fix ist in Arbeit: “Our teams are working around the clock worldwide to develop a security update of appropriate quality to address this issue.” (siehe 1.).
Auch an Forefront wird gearbeitet. Es werden zwei neue “Rules” hinzugefügt werden, welche den Content Type prüfen und die Anzahl der Form values im HTTP-Request prüfen (> 1000 = Deny): “Microsoft’s own Forefront Threat Management Gateway (TMG) will receive an update containing a signature for this issue today. (Vulnerability: Win/ASPNET.POST.DoS!NIS-2011-0001)” (siehe 3.)
Hier alle Links mit weiterführenden Informationen gesammelt:
Update: Ein Fix von Microsoft wird ab 29.12. verfügbar sein!
blogs.technet.com/.../microsoft-k-252-ndigt-fix-f-252-r-asp-net-hashdos-an-azure-wird-automatisch-gefixt.aspx