Willkommen in der dunklen Welt des Internets. Wir alle kennen die Vorzüge, doch heute unternehmen wir eine Reise in die Tiefen des XSS.
Cross-Site Scripting bezeichnet einen der häufigsten Cyberangriffe. Ziel sind vertrauenswürdig erscheinende Websites. Diese sehen für uns ganz normal aus – doch Sicherheitslücken haben es Angreifer:innen erlaubt, Schadcode einzupflanzen. Es handelt sich also sprichwörtlich um den Cybercrime-Wolf im Schafspelz, der Benutzerdaten entwendet, Identitätsdiebstahl betreibt und unbemerkt Schadsoftware ausführen kann.
Was XSS genau ist, wieso es so hinterlistig ist und was man dagegen tun kann, erfahrt ihr hier!
Cross-Site-Wie bitte?
Cross-Site (über Seiten hinweg) bezieht sich darauf, dass der Angriff über verschiedene Aufrufe einer Website ausgeführt wird. Dabei wird Schadcode im Browser des ahnungslosen Benutzers ausgeführt, sobald er mit einer infizierten Website interagiert.
Scripting bezieht sich auf den bösartigen Code, der in Form von Skripten oder Codefragmenten eingeschleust wird.
Dieser kann in verschiedenen Sprachen (häufig JavaScript) geschrieben sein und wird vom nichtsahnenden Browser des Nutzers interpretiert und ausgeführt.
Häufigkeit
Cross-Site-Scripting ist ein Dauerbrenner unter den Sicherheitsangriffen. Laut rapid7 zählt es zu den sieben häufigsten Cyberangriffen und erfreut sich seit 15 Jahren großer Beliebtheit unter Angreifer:innen. Genaue Statistiken sind kaum zu finden, da viele XSS-Fälle nicht gemeldet oder erst gar nicht erkannt werden.
Vorgehensweise und Schädlichkeit
Es gibt drei verschiedene Arten des XSS. Diese könnt ihr bei Interesse im unteren Abschnitt nachlesen.
Grundlegend wird man beim Cross-Site-Scripting nicht direkt angegriffen – schädlicher Code wird in scheinbar sichere Webumgebungen gepflanzt und in Folge in den Browsern der Nutzer:innen ausgeführt. Die Website wirkt vertraut und so ist man gewillt, beispielsweise Anmeldedaten oder persönliche Daten einzugeben. Dass diese abgegriffen werden, merkt man dabei meist gar nicht oder viel zu spät. Cyberkriminelle sind auf sensible Daten (Anmeldedaten, Passwörter, persönliche Informationen usw.) aus oder können sogar die Sitzung des Nutzers übernehmen – hiermit kann Identitätsdiebstahl betrieben werden. Es dient oft als Grundlage für Phishing-Angriffe und wird meist über E-Mail-Spam verbreitet. Auch Website Defacement ist mit XSS möglich – dabei werden Informationen oder das Layout einer Website von Unbefugten verändert, was einen Unternehmensruf langfristig schädigen kann.
Problematisch ist insbesondere, dass Cross-Site-Scripting lange unbemerkt bleiben kann.
Wer ist gefährdet und was kann man tun?
Im Grunde genommen ist prinzipiell jeder angreifbar, der das Internet nutzt. Beliebte Ziele sind oft Endbenutzer, die auf Webseiten mit Kommentarfunktionen surfen und eifrig in Blogs und Foren posten, denn diese sind besonders beliebte Angriffsziele.
Man sollte, wie sicherlich bekannt, nie auf Links von unbekannten Quellen klicken (dies betrifft insbesondere bit.ly -Links) und auch bei Sicherheitsabfragen, die man selbst nicht ausgelöst hat, ist Vorsicht geboten. Diese leiten den Ahnungslosen oft auf mit Schadcode infizierte Website.
Browser-Plugins können ebenfalls schützen, indem sie z.B. Scripte wie JavaScript blockieren. Man sollte, wenn man die Webadresse (URL) einer Website eingibt, auf die korrekte Schreibung achtgeben bzw. die URL auf ungewöhnliche Codeschnipsel prüfen, wenn man über einen Link auf einer Seite gelandet ist. Ein aktueller Browser kann helfen – im besten Falle mit aktivierten Content-Security-Policy-Anwendungen (CSP).
Man muss jedoch ehrlich sagen, dass trotz solcher Vorsichtsmaßnahmen ein Restrisiko bleibt und auch Antivirenscanner die Gefahr nicht immer erkennen.
XSS kann für Unternehmen weitreichende Folgen haben, die vom Verlust sensibler Daten bis hin zur Rufschädigung führen.
Immer empfehlenswert ist, eine IT-Abteilung oder -Dienstleister zu haben, die sich mit aktuellen und bekannten Angriffsmethoden auskennt. Auch ist eine Sensibilisierung und Schulung der Mitarbeiter:innen empfehlenswert – ein einziger Klick auf eine unseriöse E-Mail kann genügen, um Cyberkriminellen Tür und Tor zu öffnen.
Auf Serverseite sollte eine gründliche Validierung und Bereinigung von Benutzer-eingaben implementiert sein, bevor diese in die Datenbank gelangen. Auch muss gesteuert werden, welche Art von Inhalten auf der eigenen Website überhaupt akzeptiert werden.; die Website an sich sollte sauber codiert sein. Selbstverständlich sollte die Unternehmenssoftware auf dem neuesten Stand sein, inklusive aktuellen Sicherheitsupdates.
Arten des XSS
Reflektierendes Cross-Site-Scripting
Beim reflektierenden XSS wird ein präparierter Link oder ein manipuliertes Formular auf einer Website erstellt. Wenn ein:e Benutzer:in diesen Link anklickt oder das Formular abschickt, gelangen die eingegebenen Daten zum Webserver.
Dieser verarbeitet die Anfrage (mit dem Schadcode), generiert die modifizierte Seite und sendet diese als Antwort an den Benutzer zurück. Dabei wird der schädliche Code nicht auf den Servern gespeichert, sondern nur der Anfrage des Nutzers entsprechend als http-Antwort ausgeführt und zurück an den Browser geleitet (daher der Begriff reflektierende XSS).
Der Benutzer sieht nun die vom Browser gerenderte (dargestellte) Seite – im gleichen Atemzug wird der bösartige Code im Kontext der Website ausgeführt. Dieser hat nun freie Hand und kann beliebige Aktionen ausführen. Den Geschädigten fällt dabei nichts auf.
Diese Art des Cross-Site-Scripting ist perfekt für Phishing-Angriffe geeignet, da der Nutzer die mit Schadcode behaftete Website für echt hält und bedenkenlos vertrauliche Daten eingibt (z.B. Anmeldedaten).
Persistierendes XSS
Während beim reflektierenden XSS nur jene Nutzer betroffen sind, die beispielsweise einen manipulierten Link anklicken, wird beim persistenten Cross-Site-Scripting Schadcode dauerhaft in der Datenbank (auf dem Webserver) der betroffenen Website gespeichert und dann bei jedem Aufruf an alle Benutzer ausgeliefert. Dies bleibt oft unbemerkt, da die Website nach wie vor „normal“ und vertrauenswürdig erscheint.
Beliebte Ziele für Angreifer:innen sind hierbei Eingabemöglichkeiten auf Websites, die zur Speicherung von Nutzerdaten verwendet werden – dazu zählen Kommentarfelder, Gästebücher oder Foren.
Wenn jemand in einem Forum einen Beitrag postet, wird dieser auf dem Webserver gespeichert, damit jeder andere, der die Website aufruft, diesen auch lesen und beantworten kann. In einen Kommentar kann aber auch Schadcode eingefügt werden, oft in Form von JavaScript – auch dieser wird in der Datenbank der Seite gespeichert und bei jedem neuen Aufruf ausgeführt. Damit ist jeder neue Websitenbesucher ungewollt und oft ohne Verdachtsmoment Opfer des Angriffes geworden.
Persistentes XSS wird neben dem Abgreifen von Benutzer, Anmelde– und Sitzungsdaten auch zur Verbreitung von Malware und zum sogenannten Website-Defacement genutzt. Dabei werden Inhalte einer Website unbefugt verändert – zum Beispiel, um User auf betrügerische Websites umzuleiten oder den Ruf eines Unternehmens zu schädigen.
DOM-basiertes XSS
Kurz zur Erklärung – ein DOM ist kein Bauwerk, sondern das sogenannte Document Object Model einer Website. Es bezeichnet einfach gesagt eine einheitliche Programmierschnittstelle, mit der es möglich ist, Webseiten dynamisch anzupassen.
Angreifer:innen suchen gezielt nach Webseiten, in denen man Benutzereingaben direkt in das DOM einfügen kann und bauen Schadcode darin ein. Diese Art des Cross-Site-Scripting findet nicht über dem Webserver statt. Stattdessen wird bösartiger Code nutzerseitig im Browser ausgeführt, sobald die infizierte Seite aufgerufen wird. Es wird deshalb auch als lokales XSS bezeichnet. Wie bei den anderen Arten ist man auch hier auf sensible Daten, der Verbreitung von Malware und Sitzungsübernahme aus.
HINWEIS
Der Wolf im Schafspelz dient hier lediglich als Metapher.