Skip to content

Ein Jahresende mit Schwachstellen - Im Web, in Java und in WPS

In den letzten zwei Wochen des Jahres 2011 wurden noch mal einige Schwachstellen veröffentlicht. Kommentieren werde ich davon hier nur drei: Die DoS-Schwachstelle in gängigen Skriptsprachen und Plattformen für Webanwendungen, die von Cyberkriminellen ausgenutzten Schwachstellen in Java und die mehr oder weniger kritische Schwachstelle in Wi-Fi Protected Setup (WPS), die u.U. die sichere WPA2-Verschlüsselung ad absurdum führt.

Hash gefährdet Ihren Webserver!

Auf dem 28. Chaos Communication Congress (28C3) wurden Schwachstellen in gängigen Skriptsprachen und Plattformen für Webanwendungen wie ASP.NET, Java, PHP, Python und Ruby vorgestellt ("Effective Denial of Service attacks against web application platforms"): Die verwendeten Hashfunktionen zum Finden einzelner Objekte in größeren Datenmengen erlauben u.a. Denial-of-Service-Angriffe. Details liefern die Advisories von n.runs (PDF, Entdecker der Schwachstelle), dem oCERT (zuständig für die Koordinierung mit den Open-Source-Entwicklern) und Microsoft.

Die Schwachstelle wurde in einigen der betroffenen Skriptsprachen und Plattformen behoben, von Microsoft sogar im Rahmen eines außerplanmäßigen Security Updates (MS11-100, weiterführende Informationen gibt es im Security Research & Defense Blog und in den "December 2011 Out-Of-Band Security Bulletin Webcast Q&A").

Microsoft stuft das Security Bulletin als kritisch ein, außer der DoS-Schwachstelle werden drei weitere, bisher nicht veröffentlichte Schwachstellen behoben, die die Ausführung beliebigen Codes und Privilegieneskalation erlauben - und das ist dann wirklich kritisch. Wobei man auch die DoS-Schwachstelle nicht unterschätzen sollte: Laut W3Techs gibt es auf der Server-Seite im Grunde nur zwei weit verbreitete Programmiersprachen: PHP mit 77,3% und ASP.NET mit 21,7%. Auf Platz 3 liegt Java mit 4.0% (und dazu komme ich gleich noch). Microsoft hatte also allen Grund, ASP.NET schnell aus der Schusslinie zu nehmen. Wie viele Admins die am 29.12. veröffentlichten Patches wirklich noch 2011 installiert haben, ist eine andere Frage...

Java - bei Cyberkriminellen beliebter als bei Webentwicklern

4,0% der Webserver setzen Java ein (s.o.), das ist nicht gerade viel. Bei den Cyberkriminellen scheint Java deutlich beliebter zu sein, wenn es auch keine entsprechenden Statistiken gibt. Dafür aber einige Fakten, die diesen Schluss nahelegen. Zum Beispiel ein Exploit für eine Schwachstelle in Java, der z.B. über die manipulierte Website von Amnesty International UK verbreitet wurde. Die Website wurde am oder vor dem 16. Dezember kompromittiert, der Schadcode erst am 23. Dezember entfernt.

Der eingesetzte Exploit war bereits zuvor aufgefallen, als er in populäre Exploit-Kits wie z.B. Black Hole und Phoenix übernommen worden war. Daraus entstand dann auch ein Modul für das Metasploit-Projekt (Code) - funktionsfähig unter Windows, Linux und Mac OS X.

Bereits im Oktober 2011 war sowohl Brian Krebs als auch Microsoft unabhängig voneinander aufgefallen, dass Java-Exploits anfingen, den bisherigen Spitzenreitern (Adobes Flash Player und Reader) gefährlich zu werden. Mikko H. Hypponen von F-Secure fasst das alles unter dem Titel "Java Considered Harmful" zusammen. Stimmt, ein nicht aktuelles Java ist gefährlich. Ebenso wie ein nicht aktueller Adobe Reader oder Flash Player. Aber ich habe den Eindruck, dass man das noch fortführen kann, und dann sieht es für Java besser aus, denn bei den 0-Day-Exploits scheinen Adobe Reader und Flash Player ihre Vorrangstellung zu verteidigen. Jedenfalls hört man oft von Angriffen über 0-Day-Schwachstellen in Adobe Reader oder Flash Player, aber selten über solche in Java.

WPS - zum Teil "Broken by Design" - und zusätzlich by Implementation

Wi-Fi Protected Setup (WPS) soll die sichere Konfiguration von neuen WLAN-Geräten vereinfachen, indem nach einem Knopfdruck am WLAN Access Point oder durch Angabe einer vereinbarten PIN die Einrichtung der WPA/WPA2-Verschlüsselungsverfahren automatisch durchgeführt wird. Das klingt schon nicht wie eine wirklich gute Idee, und wenn man z.B. die PIN-Variante falsch entwirft, wird daraus eine sehr schlechte Idee und letztendlich eine Schwachstelle. Genau das ist jetzt passiert, bzw. genauer: Bekannt geworden. Denn passiert ist es ja schon beim Design.

Stefan Viehböck hat herausgefunden, dass die einfachste Variante, bei der eine auf dem Gerät aufgedruckte PIN zur Aktivierung von WPS verwendet wird, für Brute-Force-Angriffe anfällig ist. Wird eine falsche PIN eingegeben, senden die Access Points eine Fehlermeldung - und die verrät ggf., dass die erste Hälfte der PIN korrekt ist. Die letzte Ziffer der PIN ist eine Prüfsumme für die PIN, so dass maximal 11000 Versuche nötig sind, um die vorgegebene PIN zu ermitteln. Und bei einigen Access Points fehlen auch gleich noch sämtliche Schutzmaßnahmen gegen Brute-Force-Angriffe.

Die Hintergründe und eine Einschätzung, wie gefährlich die Schwachstelle wirklich ist, werde ich am kommenden Donnerstag veröffentlichen, denn das ist einen Grundlagen-Artikel wert. Hier kommt nur der fällige Kommentar dazu, wobei ich mich aber der Höflichkeit halber etwas zurück halte. Machen wir es kurz: Wie kann man nur auf die Idee kommen, eine PIN-Abfrage ohne jeden Schutz vor Brute-Force-Angriffen zu implementieren? Das betrifft zwar nur einen Teil der Hersteller, aber die PIN ist eine Art Passwort, und Passwortabfragen muss man vor Brute-Force-Angriffen schützen - das weiß doch wohl heutzutage jeder Entwickler. Nur nicht die der Firmware der Access Points. Was wissen die denn noch alles nicht?

Der Design-Fehler ist ein Herstellerübergreifendes Problem, aber das ist kein Wunder, da die Hersteller sich ja auch nur an die Vorgaben der WiFi Alliance halten. Aber warum ist das da keinem der Entwickler aufgefallen? Haben die alle nie davon gehört, dass man keine Informationen in Fehlermeldungen ausgibt, die einem Angreifer die Arbeit erleichtern können? Insbesondere natürlich keine Teile des richtigen Passworts, wenn das falsche eingegeben wurde? Ein einfaches "PIN falsch" würde als Fehlermeldung völlig reichen. Ein "PIN falsch, aber da Anfang war schon mal gut" ist doch eine ziemlich blöde Fehlermeldung, oder? Wie schon geschrieben: Auf die Details werde ich am Donnerstag eingehen. Hier kommt nur das virtuelle Kopfschütteln zum Ausdruck...

Carsten Eilers

Trackbacks

Keine Trackbacks