Sucuri: Image Code Injection

Die Sicherheitsfirma Sucuri hat eine neue Angriffsmethode gefunden. Per Bild Code in den Browser einschleusen.

Das geht im wesentlichen so: In einem iFrame wird ein Stück JavaScript geladen. Dieses JavaScript lädt ein Bild nach. Dann wird das Bild lokal im Browser entpackt, und der Inhalt in einem weiteren iFrame versteckt.

Klingt erst mal verwirrende. Erklärungsversuch: So ein Bild besteht ja auch nur aus Bits und Bytes. In diesen Daten kann man, neben den sichtbaren Pixeln, noch weitere Informationen unterbringen. Die liest man später einfach wieder aus. Der Vorteil? Nun, die meisten Bilder werden nicht von Virenscannern untersucht, weil man nicht davon ausgeht das sie ausführbaren Code enthalten.

Etwas bekannter wurde das schon mal als „Datenversteck“. Die meisten Bildschirme und Bildformate können viel mehr Farben und Pixel abbilden, als der Mensch wahr nimmt. Wer kann den schließlich schon 16 Millionen Farben oder 2048 Pixel in einer Zeile voneinander unterscheiden? Das nutzt man, und verändert einzelne Pixel in dem Bild. Durch diese Veränderungen kann man wieder neue Informationen speichern, die man dem Bild gar nicht ansieht.

Und so lädt ein völlig ungefährlich aussehendes JavaScript (es enthält ja keinen schädlichen Code) ein Bild, und entpackt aus diesem den eigentlichen schädlichen Code erst lokal im Browser, wo der Virenscanner nicht mehr hinsieht.

In dem konkreten Beispiel wurde das mit einem PNG-Bild gemacht, und das JavaScript nannte sich zur Tarnung auch noch „jquery.js“. Letztendlich kann man das natürlich mit allen möglichen Bildern machen, und man könnte eigentlich auch jeden beliebigen Inhalt in so ein Bild kodieren. Text ist doch auch nur 0 oder 1. Das Bild als versteckter Container für beliebige Fracht in die keiner rein schauen soll.

Image Code Injection

Payload

sucuri: New iFrame Injections Leverage PNG Image Metadata

heise: Fotos schmuggeln Schadcode auf Webseiten