Sven Rautenberg: Spaß mit Cross-Site Scripting

Beitrag lesen

Moin!

Noch eine Ergänzung bzw. Exkursion zum Thema "Kontextwechsel":

Als geradezu dramatisch (und als Beweis, dass selbst erklärte Profis das Thema nicht im Griff haben) muß man in diesem Zusammenhang die Entwicklung von Word-Viren bezeichnen.

Früher galt als Benutzertraining gegen Virenabwehr ja die schlichte Regel: Wenn du nicht von _möglicherweise_ bösartigen Programmen infiziert werden willst, dann starte einfach _grundsätzlich_ keine Programme, die man dir z.B. per Mail zuschickt - dann bist du sicher. Alle _Datendateien_ hingegen kannst du beruhigt mit dem zugehörigen Programm öffnen - da passiert nichts.

Und irgendwann kommt Microsoft auf die Idee, dass man in Word-Dateien auch den Programmcode von Makros speichern kann. Und auf einen Schlag verwandeln sich sämtliche bis dahin als absolut ungefährlich betrachtete Word-Textdateien in Programmdateien - einfach weil die Gleichung "Word-Datei == Text != ausführbarer Programmcode" nicht mehr gilt. Ab sofort mußte man Word-Dateien also als _möglicherweise_ virusverseucht betrachten, und die logische Konsequenz für das Benutzertraining lautete: "Starte keine Programme und öffne keine Dateien, die man dir z.B. per Mail zuschickt".

Microsoft hat in der Folge den gemachten Fehler dann zu korrigeren versucht - jetzt wird der Anwender immerhin gefragt, ob er Makros in Word-Dokumenten ausführen möchte, oder nicht, und man kann die Makros wohl auch ganz abschalten. Aber wirkliche Sicherheit, dass dieses Feature dann auch garantiert abgeschaltet ist, hat man nicht, sondern muß Microsoft vertrauen, dass die diesen Teil fehlerfrei realisiert haben.

Das gleiche Spielchen gab's dann übrigens noch mal bei HTML-EMails.

Eigentlich sind EMails, egal ob Plain Text oder angehübscht durch HTML, nur reiner Text. Den einem Mailprogramm vorzusetzen (beim Mailabruf) und auf dem Bildschirm anzuzeigen sollte _eigentlich_ kein Problem sein.

Doch Outlook setzt den IE als Mailbetrachter ein, und der IE kann natürlich Javascript ausführen. Außerdem hat der IE immer diverse Sicherheitslücken gehabt, die sich ausnutzen ließen. Und schon passiert wieder so ein Kontextwechsel: Während Plain-Text-Mails weiterhin nur reiner Text sind, können HTML-Mails ausführbaren Code enthalten. Und welchen Inhalt eine Mail hat, sieht man normalerweise vorher nicht. Also muß das Anzeigeprogramm für die HTML-Mails so beschaffen sein, dass ein Ausführen von möglicherweise enthaltenem Programmcode in der Mail garantiert ausgeschlossen ist.

Die Liste von Sicherheitslücken, die der IE, Outlook und Outlook Express aufweisen (beispielhaft bei Google suchen: http://www.google.com/search?q=outlook+javascript+vulnerability), und von denen viele mit der unerwünschten, schädlichen Ausführung von Javascript (bzw. JScript oder VBScript) in Verbindung stehen, zeigt doch eigentlich recht deutlich, dass diese Kontextwechsel selbst für das größte Softwareunternehmen der Welt nur äußerst schwer beherrschbar sind.

Es ist für den einfachen Programmierer daher immer eine extrem gute Idee, Kontextwechsel zu vermeiden und immer passend zu Escapen. Insbesondere Text, der immer als harmlos betrachtet werden kann, auch wenn er vielleicht genau die gleichen Zeichen enthält, wie Javascript-Schadcode, darf deshalb niemals als etwas anderes, als Text wirksam werden (insbesondere nicht als Javascript). Nur dann ist man mit recht einfachen Mitteln auf der sicheren Seite.

- Sven Rautenberg

--
"Love your nation - respect the others."