Sprayende Malware Fabriken
Posted by Urs Meile on 19th Januar 2011
Seit Monaten wird in der Fachcommunity eine neue Möglichkeit diskutiert, Schadsoftware auf einem modernen Betriebssystem zu platzieren: JIT Spraying. Beispielsweise kann mit dem Just In Time Compiler von Flash aus einem entsprechenden ActiveScript heraus Malware in den Speicher eingebracht werden. Ob sich „das Blatt wieder zu Gunsten der Angreifer“ wendet, wie heise.de voraussagt?
Auf aktuellen Windows Systemen scheitern konventionelle Versuche, etwa mit Buffer Overflows Malware zu starten. Das wird durch Markierung von Speicher als „nicht ausführbar“ (Data Execution Prevention DEP) und die zufällige Platzierung von Modulen (Address Space Layout Randomisation ASLR) bewirkt.
Auf der Suche nach Speicherplatz, der beschrieben und ausgeführt werden kann, fällt der Blick auf Scriptinterpreter wie Active Script. Um die Ausführungsgeschwindigkeit zu beschleunigen, werden Scripts on the run erst kompiliert und dann ausgeführt. Mit geeigneter Manipulation des Scriptcodes können so auch spezielle Muster erzeugt werden: Malwarestücke.
Teilautonom
Das Risiko entsteht nicht darum, weil DEP ausgetrickst wird, denn DEP funktioniert auf der Basiseben des Systems und seiner Prozesse konsistent. Das Problem entsteht, weil hier auf dem System relativ entkoppelte Teilsysteme – eigentlich Codefabriken – existieren. Es ist keine Lücke, sondern eine Funktion dieser Codefabriken, Lauffähigen Code zu erzeugen. Verschiedene Aspekte sind problematisch:
- Es gelangt unsignierter Programmcode auf das System, zB Scripts von einer Website.
- Die Scripts werden in reproduzierbarer Weise in direkt lauffähigen Code gewandelt.
- Der Compiler ist vom Betriebssystem entkoppelt, die entsprechenden Mechanismen greifen nicht.
Es grundsätzlich problematisch, lauffähigen Code auf einem System zuzulassen. Gegenüber dem Herunterladen und Laufenlassen beliebiger *.exe Files hat sich in den letzten Jahren eine angemessen kritische Haltung auch bei vielen Usern verbreitet. Gegenüber Scripts hat sich eine gewisse Sorglosigkeit gehalten, auch im professionellen Umfeld. Einerseits vertraut man auf die Zuverlässigkeit von Interpretern in einer Browser-Sandbox. Andererseits wird gar nicht kritisch diskutiert, weil die serverseitige Entwicklung zu immer mehr Scripts hin ging. Der Webserver versendet Objekte und Scripts – die Page wird dann durch den Browser beim User zusammengebaut. Viel sicherer wäre natürlich, dem User nur Objekte darzubieten.
Die massive Verbreitung von Scripts hat nun die Browser-Programmierer unter Druck gesetzt, aus Performancegründen zu kompilieren. Google war mit Chrome und beeindruckenden Performance-Vorteilen Vorreiter dieser Entwicklung.
Riskioabschätzung
Das Teilproblem, Malwarescripts zu erzeugen, die kompiliert lauffähige Malwareelemente ergeben, darf als gelöst angesehen werden. Auf einem aktuellen Windows-System müssen aber eine Reihe von weiteren Hürden überwunden werden, bis eine Kompromittierung des User-Kontexts gelingt. Härtung des Compilers: Die Browserproduzenten dürften einzelne Härtungsmechanismen einbauen, wenn das Problem praktisch relevant werden sollte. Sandboxing: Ein Malwarefragment im Browserkontext kann nur selektiv auf Funktionen des Systems zugreifen. Integrity Level: Ein Malwarefragment im Browserkontext kann keine höher eingestuften Prozesse ansprechen oder kreieren.
Leider schweigen sich die vorliegenden Publikationen darüber aus, wie das Potential in Bezug auf ein aktuelles System und in der realen Welt zu bewerten ist. Vorläufig ist noch nichts über lebensfähige Implementierungen im realen Ökosystem bekannt. Auf ein halbes Jahr hinaus betrachtet dürfte die praktische Relevanz äusserst bescheiden sein. Das mittelfristige Potential ist vorhanden, das Ausmass bleibt offen und hängt auch von den Gegenmassnahmen der Compilerbauer ab.
Für Maschinen mit Top Security Maschinen muss diskutiert werden, ob nicht ein absolutes Whitelisting angesagt ist, das auch Scripts umfasst. Unter 64 Bit Windows können die Nebenfolgen in der 64Bit Instanz von Internet Explorer schon mal getestet werden: Flash gibt da schon gar nicht, Java Script und Active Script kann im Browser weggeschaltet werde.
Posted in Betriebssystem, IT-Sicherheit, Malware, Verletzlichkeiten und Patches | No Comments »





