In this article
Mehr als die Grundlagen: Vertiefte Einblicke in XSS-Schwachstellen
Webanwendungen sind ihrer Natur nach Cyberkriminellen ständig einer Vielzahl von Angriffen ausgesetzt. Deshalb sind sie an 26 % aller Sicherheitsverletzungen beteiligt. Angreifer scannen diese exponierten Anwendungen kontinuierlich nach bekannten Schwachstellen und sammeln Informationen, um einen Angriff vorzubereiten. Sobald sie eine umfangreiche Liste potenzieller Ziele zusammengestellt haben, versuchen sie rasch, möglichst viele der entdeckten Schwachstellen auszunutzen. Ohne diese Schwachstellen proaktiv zu erkennen und zu verwalten, können Unternehmen schnell kompromittiert werden.
In diesem Artikel befassen wir uns mit Cross-Site-Scripting-Angriffen (XSS), einer der häufigsten Arten von Web-Angriffen. Wir untersuchen, wie sie ablaufen und wie sie sich verhindern lassen.
Was ist ein XSS-Angriff?
XSS-Angriffe gehören zu den häufigsten Web-Angriffen, mit denen Unternehmen konfrontiert sind. Dabei werden schädliche Skripte in Webseiten eingeschleust, die dann beim Aufrufen der Seite im Browser einer Person ausgeführt werden. Aufgrund ihrer schwerwiegenden Auswirkungen sind diese Angriffe so verbreitet, dass sie aktuell auf Platz drei der OWASP Top 10 stehen.
Diese Schwachstellen stellen eine kritische Sicherheitsbedrohung dar, da sie die Privatsphäre von Nutzern gefährden und Unternehmen erheblichen Schaden zufügen können. Angreifer können XSS-Schwachstellen ausnutzen, um Nutzersitzungen zu übernehmen, indem sie Cookies oder Sitzungstokens stehlen. So erhalten sie unbefugten Zugriff auf sensible personenbezogene und finanzielle Daten. Neben dem Datendiebstahl können XSS-Angriffe auch Webseiten verunstalten, den Ruf eines Unternehmens schädigen und das Vertrauen der Nutzer untergraben.
Sie können Nutzer außerdem auf schädliche Websites umleiten, häufig mit dem Ziel, Phishing zu betreiben, und Angreifern ermöglichen, ohne Wissen der Nutzer deren Interaktionen mit einer Webanwendung zu manipulieren. Das kann von der Übermittlung falscher Informationen bis hin zum Auslösen nicht autorisierter Finanztransaktionen reichen.
Wie funktionieren XSS-Angriffe?
XSS-Angriffe sind nicht alle gleich, was das Problem zusätzlich erschwert. Es gibt drei Hauptarten: gespeicherte, reflektierte und DOM-basierte Angriffe. Jede funktioniert anders und kann unterschiedliche Auswirkungen haben.
Gespeichertes (oder persistentes) XSS
Bei diesen Angriffen werden schädliche Skripte direkt auf den Ziel-Webservern gespeichert, zum Beispiel in einer Datenbank, einem Forenbeitrag, einem Besucherprotokoll oder einem Kommentarfeld. Ruft ein Browser anschließend Daten mit dem darin enthaltenen schädlichen Skript ab, wird dieses automatisch im Browser der nutzenden Person ausgeführt. Diese Art von Skripten ist besonders gefährlich: Sie stellen so lange eine Bedrohung dar, bis der schädliche Inhalt vom Server entfernt wird, und können daher weiterhin eine große Zahl von Nutzern angreifen.
Ein Beispiel für diese Angriffsart: Ein Angreifer veröffentlicht in einem Blog einen Kommentar mit einem Skript. Nach dem Absenden wird der Beitrag auf dem Server gespeichert. Öffnet eine andere Person den Beitrag, wird das Skript automatisch in ihrem Browser ausgeführt.
Reflektiertes (oder nicht persistentes) XSS
Anders als bei einem persistenten XSS-Angriff müssen bei der reflektierten Variante keine schädlichen Skripte gespeichert werden. Stattdessen werden Skripte in eine URL oder Webanfrage eingebettet. Diese Angriffe sind auf die Aktionen der Nutzer angewiesen, etwa das Klicken auf einen schädlichen Link, das Absenden eines Formulars oder den Aufruf einer schädlichen Website. Sobald eine Person mit dem Skript interagiert, wird eine Nachricht gesendet, die von einem Webserver zurückgespiegelt und im Browser des Opfers ausgeführt wird. Dabei scheint sie vom Server zu stammen. Angreifer müssen Nutzer häufig dazu verleiten, auf den schädlichen Link zu klicken. Dafür können sie Phishing-Techniken, schädliche Anzeigen oder verkürzte URLs verwenden, die die vollständige URL verbergen, etwa Bit.ly.
Ein Beispiel für einen reflektierten Angriff: Ein Angreifer sendet einer Person einen Link, in den ein Skript eingebettet ist. Klickt die Person darauf, wird das Skript an den Server gesendet und von dort an ihren Browser zurückgespiegelt, wo es ausgeführt wird. Anders als bei einem persistenten Angriff, der mehrere Nutzer betreffen kann, wird dieser Angriff bei jeder Interaktion nur einmal ausgeführt.
DOM-basiertes XSS
Ein DOM-basierter XSS-Angriff unterscheidet sich grundlegend von den beiden anderen Arten, da er das Document Object Model (DOM) einer Webseite betrifft. Bei solchen Angriffen wird die Payload durch eine Änderung der DOM-Umgebung im Browser des Opfers ausgeführt, häufig über clientseitige Skripte, statt an den Server gesendet zu werden.
Ein Beispiel dafür ist eine Webanwendung, die Daten aus einer URL ohne angemessene Validierung verwendet. Durch die fehlende Validierung können Eingaben das DOM verändern, wodurch sich schädliche Skripte ausführen lassen. Diese Angriffe sind schwer zu erkennen, da das XSS clientseitig ausgeführt wird und der schädliche Code deshalb möglicherweise nicht in der Serverantwort enthalten ist.

Wie lassen sich XSS-Angriffe verhindern?
Ein moderner Ansatz zur Verhinderung von XSS-Angriffen beginnt damit, Sicherheit direkt in den Entwicklungslebenszyklus einzubetten. Eine umfassende, auf Entwickler ausgerichtete Sicherheitsplattform nutzt verschiedene Testmethoden, darunter Static Application Security Testing (SAST) und Dynamic Application Security Testing (DAST), um einen vollständigen Überblick über Schwachstellen zu bieten.
KI-gestützte SAST-Tools analysieren den Quellcode auf Fehler, während DAST-Tools die laufende Anwendung auf Schwachstellen testen, die erst zur Laufzeit auftreten. Durch die Integration dieser Testtools in die CI/CD-Pipeline können Unternehmen Entwickler dabei unterstützen, Schwachstellen frühzeitig zu finden und zu beheben – lange bevor sie in der Produktionsumgebung ausgenutzt werden können.
Wird eine potenzielle Schwachstelle erkannt, kann eine Strategie helfen, bei der grundsätzlich allen Nutzereingaben misstraut wird. Dazu gehört, Eingaben zu validieren, damit sie den erwarteten Formaten entsprechen, und sie zu bereinigen, um schädliche Inhalte wirksam zu entfernen oder zu neutralisieren. Als Faustregel gilt: Wo Eingaben möglich sind, besteht auch die Möglichkeit einer XSS-Schwachstelle. Daher sollten Eingaben bereinigt werden.
Für einen ganzheitlichen Schutz sollten auch Ausgaben durch Kodierung neutralisiert werden. Dabei werden Sonderzeichen in ihre HTML- oder URL-kodierten Entsprechungen umgewandelt, sodass eingebettete Skripte wirkungslos werden. Selbst wenn schädliche, von Nutzern bereitgestellte Daten gespeichert wurden, können sie so nicht für künftige Angriffe verwendet werden.
XSS-Angriffe mit Snyk API & Web verhindern
Für die sichere Anwendungsentwicklung benötigen Sie eine Plattform, die nicht nur Schwachstellen findet, sondern Entwicklern auch hilft, sie schnell zu beheben.
Snyk API & Web erkennt mehr als 3.000 Schwachstellen, darunter kritische wie XSS und SQL-Injection. Als Teil der Snyk AI Trust Platform lässt sich Snyk API & Web direkt in CI/CD-Pipelines integrieren. Die Lösung unterstützt Entwickler mit priorisierten, umsetzbaren Empfehlungen zur Behebung von Schwachstellen – direkt in ihren bestehenden Workflows. Dieser automatisierte, auf Entwickler ausgerichtete Ansatz schützt Anwendungen während ihres gesamten Lebenszyklus, ohne die Entwicklung zu verlangsamen.
Erfahren Sie, wie Snyk API & Web Sie dabei unterstützt, Ihre Anwendungen abzusichern, und buchen Sie eine Demo.
Für Snyk API & Web anmelden
Nutzen Sie noch heute unsere entwicklerorientierte DAST-Engine
Decken Sie Schwachstellen mit der KI-gestützten DAST-Engine von Snyk automatisch und skalierbar auf. Verlagern Sie Sicherheitstests mit Automatisierung und konkreten Behebungsempfehlungen nach links – nahtlos integriert in Ihren SDLC.
Häufig gestellte Fragen
Können XSS-Angriffe jede Website betreffen?
Nur statische Websites, die keine Nutzereingaben verarbeiten oder anzeigen, sind vor XSS-Angriffen geschützt.
Sind moderne Web-Frameworks immun gegen XSS-Angriffe?
Moderne Frameworks können das Risiko zwar verringern, sind aber nicht vollständig immun – insbesondere, wenn sie nicht korrekt verwendet werden.
Können regelmäßige Sicherheitsupdates XSS-Angriffe verhindern?
Regelmäßige Updates können Schwachstellen entschärfen. Proaktive Sicherheitsmaßnahmen und sichere Programmierpraktiken sind jedoch ebenso entscheidend.
Reicht es aus, Eingaben zu validieren, um XSS-Angriffe zu verhindern?
Die Validierung von Eingaben ist unverzichtbar, sollte für einen wirksamen Schutz jedoch mit der Ausgabekodierung und weiteren Sicherheitsmaßnahmen kombiniert werden.