Cross Site Scripting Schwachstellen

Microsoft, Facebook, Google - sie alle haben etwas gemeinsam. Hierbei geht es nicht etwa um die Tatsache, dass sie alle in der IT-Branche tätig sind und zu den wertvollsten Konzernen unserer Zeit gehören. Es geht auch nicht um die Datensammelwut, aufgrund derer sie häufig Thema des Tages bei vielen besorgten Nutzern - und mittlerweile sogar Regierungen sind.

All diese Konzerne geben mehrere Millionen US-Dollar im Jahr aus um ihre IT-Infrastruktur so sicher wie möglich zu konzipieren und zu betreiben - und sie alle waren verwundbar für Cross-Site-Scripting Angriffe. Die bittere Realität ist, dass das Verhindern von Cross-Site-Scripting, auch XSS genannt, schwieriger ist als dies zuerst den Anschein hat.

Im Jahr 2019 war Google’s Suchmaschine verwundbar für einen XSS-Angriff aufgrund eines Programmierfehlers in einer JavaScript-Library. Deshalb wäre es einem Angreifer möglich gewesen, einen präparierten Link zu versenden und JavaScript-Code im Kontext von Google.com auszuführen. Genauer gesagt war es tatsächlich möglich eine bestimmte Kombination von HTML-Tags in die Google Suchleiste einzugeben und so JavaScript-Code auszuführen - eine katastrophale Sicherheitslücke für die mit Abstand größte Suchmaschine der Welt, d.enn Cross-Site Scripting Angriffe können leicht zu gestohlenen Nutzerdaten und gekaperten Accounts führen.

Dass selbst führende Technikkonzerne anfällig für XSS sind,ies zeigt deutlich, dass das Verhindern von JavaScript-Schwachstellen extrem schwierig ist. Doch was ist Cross-Site-Scripting eigentlich? Wieso ist es so gefährlich und was kann ein Angreifer damit erreichen?

Same-Origin-Policy
Unsere Webanwendungen werden vom Browser durch die sogenannte Same-Origin-Policy (SOP) geschützt. Diese sorgt dafür, dass JavaScript-Code von https://attacker.com nicht auf https://example.com zugreifen kann. Aufgrund dessen nutzen Angreifer eine andere Methode. Sie bringen die verwundbare Website dazu den JavaScript code selbst auszuführen. Dadurch ist dieser berechtigt auf alle Ressourcen der Website zuzugreifen, was ansonsten durch SOP verhindert werden würde. Diese Ausführung von JavaScript code realisieren sie mithilfe von XSS.

Der Name Cross-Site-Scripting impliziert, dass Angreifer diese Sicherheitslücke ausnutzen um schädliche Scripte von anderen Webseiten nachzuladen. Dies ist allerdings nicht immer der Fall, da der Schadcode in vielen Fällen auch direkt eingeschleust werden kann. Dies geschieht in der Regel über den Inhalt von <script> Tags, Eventhandlern und JavaScript URls.

Es ist also hilfreich sich XSS als das Einschleusen von JavaScript-Code vorzustellen anstatt als das bloße Einbinden schädlicher externer Scripte. Doch wie sieht eine Typische Cross-Site-Scripting Schwachstelle aus?

Cross-Site-Scripting - Ein Beispiel

XSS kann das Resultat einer Vielzahl von Programmierfehlern sein. Die häufigste Ursache ist allerdings das schlichte Vergessen der Anwendung einer Funktion, welche potentiell schädliche Nutzereingaben von HTML-Sonderzeichen befreit. Schauen wir uns nun einmal das folgende Beispiel an.

const userInput = request.query.name;
const text = `Hallo ${userInput}, schön dass du da bist!`;
render(text);

Wie hier zu sehen ist, wird eine Nutzereingabe ungefiltert ausgegeben. Dies ist insofern gefährlich, als dass ein Angreifer anstatt eines Namens gefährlichen HTML-Code einfügen könnte. Dieser könnte beispielsweise aus einem Scriptblock bestehen, welche JavaScript Code enthält, der Nutzerdaten abgreift und an einen Server unter der Kontrolle des Angreifers überträgt.

Cross Site Scripting Angriffe verhindern

XSS lässt sich verhindern, indem HTML-zugehörige Sonderzeichen korrekt kodiert werden. Welches Encoding geeignet ist, hängt stark damit zusammen in welchem Kontext die Ausgabe des Textes stattfindet. Häufig verwendete Encodings sind HTML-Entities, URL-Encoding und Hex encoding. Auch das maskieren einzelner JavaScript-Sonderzeichen kann ein hilfreicher und effektiver Schutz gegen XSS sein, insofern die Ausgabe in einem Scriptblock oder Eventhandler erfolgt.

Selbst das Bundesamt für Sicherheit in der Informationstechnik hat einen Artikel über Cross-Site-Scripting verfasst. Dieser enthält unter anderem Informationen über:

Eine kurze, technische Erklärung von XSS
Die verschiedenen Arten von Cross-Site-Scripting
Einzelne Beispiele wie Angreifer XSS-Schwachstellen ausnutzen können
We use cookies to deliver you the best experience. By browsing our website you agree to our use of cookies. Learn More Wir benutzen Cookies um dir beim Besuchen unserer Website die bestmögliche Erfahrung zu bieten. Beim Besuchen unserer Website erlaubst du uns die Nutzung dieser Cookies. Learn More