Ablaufschema eines XSS-Angriffs: Der Angreifer sendet präparierten Text an den Webserver, der Server speichert ihn und liefert ihn als Teil der Seite an den Browser des Opfers aus, wo der eingeschleuste Code ausgeführt wird und das Session-Cookie an den Angreifer sendet.

XSS-Angriff

Bei einem XSS-Angriff schleust ein Angreifer eigenen Programmcode in eine Webseite ein, den dann der Browser fremder Besucher ausführt. So lassen sich Zugangsdaten stehlen oder Aktionen im Namen des Opfers auslösen, ohne dass dieses etwas bemerkt.

Jede Webseite besteht aus Text, Bildern und kleinen Programmen, die im Browser des Besuchers laufen. Diese Programme sorgen dafür, dass Menüs aufklappen oder Formulare geprüft werden. Ein XSS-Angriff nutzt aus, dass viele Seiten Texte von Nutzern anzeigen, etwa Kommentare oder Profilnamen. Der Angreifer schreibt statt eines normalen Kommentars ein solches kleines Programm hinein. Wenn die Seite diesen Text ungeprüft weiterreicht, führt der Browser jedes anderen Besuchers das Programm aus. Die Abkürzung XSS steht für Cross-Site-Scripting, also etwa „seitenübergreifendes Ausführen von Skripten“.

Warum ein fremdes Skript so gefährlich ist

Der Browser unterscheidet nicht, wer den Code geschrieben hat. Er sieht nur: Dieser Code kam von der Seite, die der Nutzer gerade besucht. Deshalb bekommt der eingeschleuste Code dieselben Rechte wie die Seite selbst. Er darf alles lesen und ändern, was auf der Seite angezeigt wird.

Besonders wertvoll ist für Angreifer das sogenannte Session-Cookie. Das ist eine kleine Datei, die dem Server beweist, dass du bereits eingeloggt bist. Wer dieses Cookie abgreift, kann sich als du ausgeben, ohne dein Passwort zu kennen. Ein erfolgreicher XSS-Angriff auf ein soziales Netzwerk kann so tausende Konten auf einmal übernehmen.

XSS steht seit Jahren in den Listen der häufigsten Sicherheitslücken im Web. Der Grund ist simpel: Fast jede moderne Seite zeigt irgendwo Inhalte an, die von Nutzern stammen. Jede dieser Stellen ist eine mögliche Einfallstür. Für Unternehmen kann eine solche Lücke Bußgelder nach Datenschutzrecht und einen erheblichen Vertrauensverlust bedeuten.

Die drei Wege, wie der Code auf die Seite kommt

Beim gespeicherten XSS legt der Angreifer seinen Code dauerhaft auf dem Server ab, etwa als Forenbeitrag. Jeder Besucher, der diesen Beitrag öffnet, wird angegriffen. Das ist die gefährlichste Variante, weil sie ohne weiteres Zutun sehr viele Opfer erreicht. Der Angreifer muss danach gar nichts mehr tun.

Beim reflektierten XSS steckt der Code in einem Link. Der Angreifer verschickt diesen Link per Mail oder Chat. Klickt das Opfer, schickt der Server den Code als Teil der Antwortseite zurück, und der Browser führt ihn aus. Eine dritte Variante heißt DOM-basiertes XSS. Dabei bleibt der Server ganz außen vor, und erst das Skript der Seite selbst baut die gefährlichen Daten in die Anzeige ein.

Der Schutz besteht immer aus demselben Grundgedanken: Eingaben von Nutzern sind Text, niemals Befehle. Entwickler wandeln deshalb Sonderzeichen um, bevor sie etwas anzeigen. Aus einer spitzen Klammer wird dabei ein harmloses Zeichenkürzel, das der Browser nur darstellt statt es auszuführen. Zusätzlich schränkt eine Content Security Policy ein, welche Skripte eine Seite überhaupt laufen lassen darf. Ein Missverständnis ist übrigens, dass HTTPS gegen XSS schützt: Verschlüsselung sichert nur den Transportweg, nicht den Inhalt.

XSS in Schlagzeilen und im eigenen Browser

Meldungen über XSS-Lücken erscheinen regelmäßig in Tech-News, oft zusammen mit einer Kennnummer, die mit „CVE“ beginnt. Betroffen waren in der Vergangenheit große Plattformen, Online-Shops und auch weit verbreitete Baukästen wie WordPress-Erweiterungen. Ein bekanntes historisches Beispiel ist der Samy-Wurm, der sich 2005 über das Netzwerk MySpace verbreitete und binnen eines Tages über eine Million Profile veränderte.

Auch als normaler Nutzer kannst du dem Thema begegnen. Auffällig lange Links mit seltsamen Zeichenfolgen sind ein Warnsignal, besonders wenn sie von Unbekannten kommen. Browser und Erweiterungen aktuell zu halten, hilft ebenfalls. Den größten Teil der Verantwortung tragen aber die Betreiber der Seiten.

In der Softwareentwicklung ist XSS ein Standardthema jeder Sicherheitsprüfung. Firmen zahlen Prämien an Personen, die solche Lücken melden, oft mehrere hundert bis mehrere tausend Euro pro Fund. Zu unterscheiden ist XSS von SQL-Injection: Dort wird die Datenbank auf dem Server angegriffen, bei XSS dagegen der Browser des Besuchers.

Související produkty

Aktuální zprávy

Subscribe free. Unsubscribe the second it sucks.

High-signal news across AI, business, UX, and tech. Every morning.