Abo
  • Services:
Anzeige
Eine GIF-Datei mit eingebautem Javascript-Code
Eine GIF-Datei mit eingebautem Javascript-Code (Bild: Screenshot Golem.de)

Cross-Site-Scripting: Javascript-Code in Bilder einbetten

Eine GIF-Datei mit eingebautem Javascript-Code
Eine GIF-Datei mit eingebautem Javascript-Code (Bild: Screenshot Golem.de)

Mittels eines Tricks lassen sich gültige GIF-Bilder erstellen, die Javascript-Code enthalten. Damit kann der Schutzmechanismus Content-Security-Policy ausgehebelt werden. Abhilfe schafft ein noch wenig verbreiteter HTTP-Header.

Anzeige

Der IT-Sicherheitsspezialist Ajin Abraham hat eine Datei erzeugt, die einen gültigen GIF-Header enthält, aber gleichzeitig Javascript ausführt. Die Methode geht auf eine Idee von Ange Albertini zurück. Mit solchen manipulierten GIF-Dateien lässt sich unter bestimmten Umständen auch auf Webseiten, die mittels Content Security Policy (CSP) geschützt sind, bösartiger Javascript-Code ausführen.

Content Security Policy ist ein mächtiges Werkzeug, um Cross-Site-Scripting-Lücken (XSS) zu verhindern. Dabei wird ein Header gesetzt, der dem Browser mitteilt, von welchen Servern er Javascript ausführen darf. Setzt ein Webentwickler Content Security Policy korrekt ein, sollte damit eigentlich die Ausnutzung aller Cross-Site-Scripting-Lücken verhindert werden.

In vielen Fällen erlauben moderne Webanwendungen das Hochladen von Bildern. Gelingt es, in ein Bild Javascript-Code einzufügen, dann wird in so einem Fall der Schutz von CSP umgangen. Denn das Bild kommt ja vom selben Server, von dem auch der legitime Javascript-Code stammt.

Gleichzeitig GIF-Bild und Javascript-Code

Ein GIF-Bild beginnt mit der Zeichenkette GIF89a. Anschließend werden die Breite und die Höhe des Bildes gespeichert. Hier setzt der Trick von Albertini an: Für die Breite kann - völlig in Übereinstimmung mit dem GIF-Format - der Wert 0x2f2a eingetragen werden. Das entspricht einem Bild von 10.799 Pixeln Breite, gleichzeitig sind es aber auch die ASCII-Werte der Zeichenfolge /*, womit in Javascript ein Kommentar eingeleitet wird. Der Rest des GIF-Headers kann mit gültigen Werten gefüllt werden. Wird die Datei als Javascript interpretiert, werden diese Daten ignoriert, da es sich um einen Kommentar handelt.

Am Ende des GIF-Bildes wird nun die Zeichenfolge */=1; eingefügt. Der Kommentar wird durch */ beendet und das =1; führt dazu, dass aus der GIF89a-Signatur vom Beginn der Datei ein gültiger Code wird. Javascript sieht nun folgenden Code:

GIF89a/*[Kommentar]*/=1;

Das wird fehlerfrei interpretiert, es wird lediglich der Variablen mit dem Namen GIF89a der Wert eins zugewiesen. Anschließend kann beliebiger weiterer Javascript-Code in die Datei eingefügt werden.

Der Vorteil dieser Methode: Selbst wenn ein Server beim Upload prüft, ob es sich bei einer hochgeladenen Datei tatsächlich um ein Bild handelt, wird sie vermutlich akzeptiert, denn sie enthält gültige GIF-Daten.

Javascript mit falschem MIME-Type

Das zugrundeliegende Problem ist letztendlich, dass Browser Javascript-Code auch dann ausführen, wenn sie mit dem falschen Dateityp gesendet werden. Bei der Dateiübertragung mittels HTTP wird vom Server im Header ein sogenannter MIME-Type mitgeschickt. Für Javascript lautet dieser beispielsweise application/x-javascript. Für ein GIF-Bild wiederum lautet der MIME-Type image/gif.

Da häufig Daten mit falschen MIME-Informationen ausgeliefert werden, gibt es in Browsern diverse Mechanismen, durch die fehlerhafte Angaben ignoriert werden. Der Browser versucht, die Daten trotz fehlerhaften MIME-Typs korrekt zu interpretieren. Wird eine Datei mittels <script src="[datei]"></script> eingefügt, wird sie als Javascript-Code ausgeführt, egal, mit welchem MIME-Type sie ausgeliefert wurde. Damit ein Angreifer den Code ausführen kann, benötigt er also immer noch eine Möglichkeit, eigenen HTML-Code in die Webseite einzufügen, also eine klassische XSS-Lücke auszulösen. Doch genau die Ausnutzung solcher Lücken sollte durch Content Security Policy ja verhindert werden.

X-Content-Type-Options: nosniff 

eye home zur Startseite
hannob (golem.de) 04. Nov 2014

[...] Sorry, nein: Das ist falsch. Firefox macht genauso Content Sniffing wie die...

neustart 03. Nov 2014

Jap, hab ich auch gedacht. Wenn man die Sicherheitsschlacht irgendwie bewältigen will...

zZz 03. Nov 2014

Ich nutze seit geraumer Zeit die Server Configs aus dem HTML5 Boilerplate Paket und passe...

bjs 03. Nov 2014

bei einem webmail könnte das zb der fall sein. dabei wird html code von unbekannter...



Anzeige

Stellenmarkt
  1. TUI Cruises GmbH, Hamburg
  2. Robert Bosch GmbH, Leonberg
  3. Vaillant GmbH, Remscheid
  4. 20-20 Technologies GmbH, Osnabrück


Anzeige
Blu-ray-Angebote
  1. (u. a. Jurassic World, Die Unfassbaren, Creed, Interstellar, Mad Max Fury Road)
  2. 19,99€ (Vorbesteller-Preisgarantie)
  3. (u. a. Der Schuh des Manitu, Agenten sterben einsam, Space Jam, Dark City)

Folgen Sie uns
       

Anzeige
Whitepaper
  1. Sicherheitskonzeption für das App-getriebene Geschäft
  2. Kritische Bereiche der IT-Sicherheit in Unternehmen
  3. Mit digitalen Workflows Geschäftsprozesse agiler machen


  1. Dice

    Kampagne von Battlefield 1 spielt an vielen Fronten

  2. NBase-T alias 802.3bz

    2.5GbE und 5GbE sind offizieller IEEE-Standard

  3. Samsung-Rückrufaktion

    Bereits 60 Prozent der Note-7-Geräte in Europa ausgetauscht

  4. Mavic Pro

    DJI stellt klappbaren 4K-Quadcopter für 1.200 US-Dollar vor

  5. Streamripper

    Musikindustrie will Youtube-mp3.org zerstören

  6. Jupitermond

    Nasa beobachtet Wasserdampf auf Europa

  7. Regierung

    Wie die Telekom bei Merkel ihre Interessen durchsetzt

  8. Embedded Radeon E9550

    AMD packt Polaris in 4K-Spieleautomaten

  9. Pay-TV

    Ultra-HD-Programm von Sky startet im Oktober

  10. Project Catapult

    Microsoft setzt massiv auf FPGAs



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Rocketlab: Neuseeland genehmigt Start für erste elektrische Rakete
Rocketlab
Neuseeland genehmigt Start für erste elektrische Rakete
  1. Osiris Rex Asteroid Bennu, wir kommen!
  2. Raumfahrt Erster Apollo-Bordcomputer aus dem Schrott gerettet
  3. Startups Wie Billig-Raketen die Raumfahrt revolutionieren

Recruiting: Uni-Abschluss ist nicht mehr das Wichtigste
Recruiting
Uni-Abschluss ist nicht mehr das Wichtigste
  1. Friends Conrad vermittelt Studenten für Serviceleistungen
  2. IT-Jobs Bayerische Firmen finden nicht genügend Programmierer
  3. Fest angestellt Wie viele Informatiker es in Deutschland gibt

X1D ausprobiert: Die Hasselblad für Einsteiger
X1D ausprobiert
Die Hasselblad für Einsteiger
  1. Modulares Smartphone Lenovo bringt Moto Z mit Moto Z Play nach Deutschland
  2. Hasselblad DJI hebt mit 50-Megapixel-Luftbildkamera ab

  1. Re: Seit 1 Monat bei mir ca. 5ms niedrigere...

    Unix_Linux | 03:29

  2. ... und der Papst verbietet Kondome (kwT)

    tfg | 03:18

  3. Re: die Amis plätten VW und wir im gegenzug FB?

    GenXRoad | 03:16

  4. Re: Sind eigentlich die Linken...

    burzum | 02:57

  5. Re: Die pure Definition von "Den Hals nicht voll...

    HorkheimerAnders | 02:45


  1. 20:57

  2. 18:35

  3. 18:03

  4. 17:50

  5. 17:41

  6. 15:51

  7. 15:35

  8. 15:00


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel