Nach den jüngsten Cross-Site-Scripting-Sicherheitslücken (XSS) haben das FBI und die CISA kürzlich ihre Sicherheitsmaßnahmen verstärkt und sich auf die Verbesserung der Cyber-Resilienz konzentriert. Es überrascht nicht, dass Unternehmen oft die Grundlagen vernachlässigen, und so kommt es zu Datenverstößen.
Cross-Site-Scripting-Angriffe treten auf, wenn Webanwendungen und -dienste Anfragen oder Eingaben nicht verarbeiten können oder nicht wie vorgesehen funktionieren. Sie sind gefährlich, weil sie nicht nur auf Anwendungen abzielen, sondern auch auf die dahinter stehenden Benutzer.
Hier finden Sie einen Leitfaden zu Cross-Site-Scripting-Angriffen und alles, was Sie zu diesem Thema wissen sollten.
Was sind Cross-Site-Scripting-Angriffe (XSS)?
Keine App und keine Website ist perfekt, es gibt immer versteckte Schwachstellen. Cross-Site-Scripting-Angriffe nutzen dies aus, indem sie bösartigen Code senden, um Fehlfunktionen zu verursachen. Diese Angriffe können es einem böswilligen Akteur ermöglichen, die Identität eines Opfers zu übernehmen und sich sogar als dieses auszugeben.
Das bösartige Skript lauert in der Web-App und ist daher nicht leicht zu erkennen. Es fügt sich in den Quellcode der App ein, sodass Dienste nicht überprüfen können, ob es aus einer nicht vertrauenswürdigen Quelle stammt. Was ist das Ergebnis?
Hacker erhalten Zugriff auf Cookies, Website-Token und andere sensible Daten, die von Ihrem Webbrowser gesammelt werden. Wenn Ihre Website oder App Inhalte an verschiedene Orte liefert, werden diese ebenfalls automatisch abgefangen. Online-Foren und Benutzer-Message-Boards, in denen Sie Kommentare unter Beiträgen hinterlassen können, sind ebenfalls anfällig dafür.
Arten von Cross-Site-Scripting-Angriffen (XSS)
XSS-Schwachstellen haben in der Vergangenheit Würmer hervorgebracht und die Sicherheitsmaßnahmen von Anwendungen untergraben. Sie können Malware verbreiten, Zugangsdaten phishen und Verteidigungswebsites kapern.
Es gibt drei Hauptarten von Cross-Site-Scripting-Angriffen (XSS). Bevor Sie lernen, wie Sie XSS-Angriffe verhindern können, sollten Sie sich über die Gefahren im Klaren sein, denen Sie ausgesetzt sind. Diese sind wie folgt.
1. Gespeichertes XSS (Persistent XSS)
Dies ist eine der grundlegendsten, aber gefährlichsten Formen von XSS. Gespeichertes XSS bezieht sich auf bösartigen Code, der in Webdatenbanken gespeichert wird, wenn die Eingabevalidierung fehlt. Der Angreifer injiziert den Code über eine Schwachstelle in der Webanwendung und speichert ihn dauerhaft. Das Opfer kann das Skript unwissentlich ausführen, und eine Nutzlast wird als HTML-Code an seinen Webbrowser gesendet. Sobald das Opfer das bösartige Skript durch Laden der Webseite ausführt, ist es zu spät.
Ein klassisches Beispiel hierfür ist ein Kommentar, der unter einem Blogbeitrag hinterlassen wird. Der Angreifer kann eine URL anhängen und das Opfer dazu bringen, den Kommentar durch Anklicken zu lesen. Wenn der Benutzer interagiert, wird der Code automatisch von ihm ausgeführt.
2. Reflektiertes XSS (nicht persistentes XSS)
Wenn die Nutzlast eines Angreifers Teil einer an den Webbrowser gesendeten Nutzlast wird, verwandelt sie sich in einen reflektierten XSS-Angriff. Die Anfrage wird vom Browser zurückgeworfen, sodass die HTTP-Antwort die Nutzlast aus der HTTP-Anfrage enthält. Hacker können eine Kombination aus Social Engineering Bedrohungen, bösartige Links und andere Phishing-Betrugsmethoden nutzen, um Opfer dazu zu verleiten, Serveranfragen zu stellen. Der einzige Haken bei dieser Technik ist, dass der Angreifer einzelne Payloads separat an die Opfer liefern muss. Er kann Payloads nicht massenhaft versenden; die meisten reflektierten XSS-Angriffe werden in sozialen Netzwerken durchgeführt.
3. DOM-basiertes XSS
Bei DOM-basiertem XSS werden Benutzerkonten gehackt, indem bösartiger Javascript-Code aus einer vom Angreifer kontrollierbaren Quelle entnommen wird. Dieser Code wird an einen Sink weitergeleitet, der ihn dynamisch ausführt und den Block willkürlich ausführt. Die Browser-URL ist die häufigste Quelle für diese Cross-Site-Scripting-Angriffe. Der Angreifer fügt außerdem einen Link hinzu, um die Opfer auf anfällige Seiten mit in Abfragezeichenfolgen eingebetteten Payloads zu leiten. Er kann auch Teile der URL fragmentieren und die Opfer durch Fehlleitung weiter manipulieren.
Wie funktioniert Cross-Site-Scripting (XSS)?
Cross-Site-Scripting funktioniert, indem es anfällige Websites manipuliert und bösartigen JavaScript-Code an Benutzer zurücksendet. Wenn der Angreifer bösartigen Code einschleust und ihn im Browser des Opfers ausführt, kann er dessen Anwendungen und alle damit verbundenen Interaktionen vollständig kompromittieren.
Cross-Origin-Iframes erlauben es Benutzern nicht, die Alert-Funktion aufzurufen. Sie werden verwendet, um einige der fortgeschritteneren XSS-Angriffe durchzuführen. Der Angreifer kann auch die Kontrolle über Berechtigungen und Benutzerzugriffe innerhalb von Webanwendungen erlangen und die darin gespeicherten Daten an sich reißen.
Cross-Site-Scripting-Angriffe und -Schwachstellen können es dem Angreifer ermöglichen, sich als Opfer auszugeben und sich im gesamten Netzwerk als dieses zu tarnen. Sie können Ursprungsrichtlinien umgehen. Sie können verschiedene Websites vollständig voneinander trennen.
Hier ist eine vereinfachte Übersicht über die Funktionsweise eines Cross-Site-Scripting-Angriffs:
- Der Angreifer sendet Ihnen einen bösartigen Link. Wenn Sie darauf klicken, wird der Code injiziert und der dynamische Inhalt an den Webbrowser übermittelt.
- Es wird eine HTTP-Anfrage an den Webserver des Angreifers gesendet. Der Hijacker kann dann Ihre gestohlenen Cookies verwenden, um sich als Sie auszugeben.
- Er kann auf sensible Informationen zugreifen und komplexere Social-Engineering-Angriffe durchführen.
- Cross-Site-Scripting-Angriffe ermöglichen es Angreifern, die Same-Origin-Richtlinien zu umgehen, die verschiedene Websites voneinander trennen sollen. Diese Angriffe sind brutal und können dem Ruf Ihres Unternehmens schaden. Der Angreifer kann Ihr Unternehmen schädigen, indem er dessen Inhalte verändert und das Image des Unternehmens beschädigt oder ruiniert.
- Sie können Fehlinformationen verbreiten, Benutzeranweisungen auf Ihren Websites ändern und Benutzer in die Irre führen.
XSS-Angriffe sind gefährlich, insbesondere wenn sie sich gegen Behörden, Gesundheitsorganisationen oder Unternehmen richten, die in Krisenzeiten wichtige Ressourcen bereitstellen.
Wie lassen sich Cross-Site-Scripting-Angriffe (XSS) verhindern?
Es gibt verschiedene Ansätze. Informieren Sie sich darüber, um zu erfahren, wie Sie Cross-Site-Scripting-Angriffe verhindern können:
- Die Validierung von Eingaben in Webanwendungen und -diensten kann dazu beitragen, Cross-Site-Scripting-Angriffe (XSS) verhindern. Sie können auch einen Schwachstellenscanner verwenden, um Ihre Websites auf andere Sicherheitslücken zu überprüfen. Dies ist eine der besten Methoden, um zu erfahren, wie Sie (XSS)-Angriffe automatisch verhindern können.
- Die zweite Möglichkeit, XSS-Angriffe zu verhindern, besteht darin, die Daten bei der Ausgabe zu verschlüsseln. Dies sollte idealerweise geschehen, bevor Sie Ihre Daten auf eine Seite schreiben. Die Art der Verschlüsselung, die Sie verwenden müssen, hängt von Ihrem Schreibkontext ab.
- Beispielsweise benötigen JavaScript-Zeichenfolgenwerte eine andere Art der Verschlüsselung als solche in einem HTML-Kontext. In einem HTML-Kontext müssen Sie Werte, die nicht auf der Whitelist stehen, in HTML-Entitäten konvertieren. In einem JavaScript-String-Kontext müssen Sie jedoch für nicht-alphanumerische Werte Unicode-Escaping sicherstellen.
- Möglicherweise sind mehrere Verschlüsselungsebenen erforderlich, und dieser Prozess muss in der richtigen Reihenfolge angewendet werden. Sie müssen Ihre Benutzereingaben in Ereignisbehandler einbetten und sich mit HTML- und JavaScript-Kontexten befassen. Es gibt zahlreiche Möglichkeiten, Eingaben bei ihrer Ankunft zu validieren.
- Wenn ein Benutzer beispielsweise eine URL übermittelt und diese in einer Antwort zurückgegeben wird, können Sie sie validieren, indem Sie mit einem Sicherheitsprotokoll wie HTTPS und HTTP beginnen. Sie können Werte auch validieren, wenn ein Benutzer sie alphabetisch oder numerisch angibt. Sie können auch anders validieren, indem Sie die Eingabe auf einen erwarteten Zeichensatz beschränken.
Hier sind einige andere Ansätze, die Sie ebenfalls verfolgen können:
- Sie können eine Liste aller sicheren Protokolle erstellen, die auf Ihrer Website zulässig sind. So blockiert Ihre Abwehr automatisch schädliche Protokolle, die sie standardmäßig nicht erkennt. Dadurch können XSS-Angriffe keine ungültigen Werte verschleiern, indem sie versuchen, Blocklisten zu umgehen.
- Benutzern sollte es nicht gestattet sein, HTML-Markups zu veröffentlichen, aber manchmal ist dies notwendig. Sie können schädliche Tags herausfiltern, indem Sie Whitelists implementieren. Diese speichern sichere Tags und filtern alle bösartigen Codes heraus, die mit Tags auf der Blacklist in Verbindung stehen. Alle Tags außerhalb Ihrer Whitelists werden als auf der Blacklist stehend betrachtet, sofern Sie sie nicht ausdrücklich angeben.
- Sie müssen Ihre Website auf Sicherheitsupdates überwachen. Angenommen, Sie planen, JavaScript-Bibliotheken zu verwenden, um Filterung und Kodierung direkt im Browser des Benutzers durchzuführen. In diesem Fall können Sie XSS-Angriffe auch mit einer serverseitigen Template-Engine verhindern. Diese kann dynamische Inhalte in HTML einbetten und einen bestimmten Code definieren.
- Sie können auch Filter mit Argumenten verwenden und den Kontext definieren. Dies kann dazu beitragen, die meisten Fälle von XSS-Angriffen zu verhindern. Und Sie können diese Escaping-Funktionen überprüfen, um regelmäßig zu bewerten, ob Sie die Template-Engine oder das Framework weiterhin verwenden möchten.
- PHP verfügt auch über integrierte Funktionen zum Codieren von Entitäten, die Sie aufrufen können, um Eingaben zu escapen, wenn sich Ihre Werte in einem HTML-Kontext befinden. Sie können sie mit drei Argumenten aufrufen und benötigen Unicode-Escape-Eingaben. PHP bietet keine APIs für Unicode-Escape-Strings.
- Konvertieren Sie Ihre Strings in HTML-Entitäten und rufen Sie dann Funktionen auf. Sie können Ihren benutzerdefinierten HTML-Encoder verwenden, um clientseitige JavaScript-XSS-Angriffe zu verhindern.
Verbessern Sie Ihre Threat Intelligence
Erfahren Sie, wie der SentinelOne-Service WatchTower zur Bedrohungssuche mehr Erkenntnisse liefert und Ihnen hilft, Angriffe abzuwehren.
Mehr erfahrenCross-Site-Scripting-Angriffe (XSS): Tipps zur Prävention (bewährte Verfahren)
Die folgenden Best Practices können Sie zur Verhinderung von XSS-Angriffen einführen:
- Bereinigen Sie Benutzereingaben und Ausgabedaten durch Kodierung.
- Sie können Sonderzeichen durch codierte Werte ersetzen, sodass alle Daten als Text und nicht als Code verarbeitet werden können. Der Angreifer kann kein bösartiges Skript einschleusen, wenn er es mit reinem Text zu tun hat. Wenn Sie die Codierung richtig anwenden, sind keine Benutzer davon betroffen.
- Je nach Geschäftslogik oder Anwendungstyp können Sie viele Arten der Kodierung anwenden, sogar je nach Art der gespeicherten und verarbeiteten Daten. Es gibt verschiedene Kodierungsmethoden, wie z. B. die Kodierung von HTML-Entitäten, eine der grundlegendsten Maßnahmen. Sie können auch Attributwerte kodieren.
- Eine weitere bewährte Methode zur Verhinderung von XSS-Angriffen ist die Filterung der auf der Clientseite empfangenen Daten. Durch die Filterung von Daten werden gefährliche Zeichen wie Tags, HTML-Ereignisbehandler, bösartige JavaScript-Elemente usw. entfernt.
- Sie können Webseitenantworten mithilfe einer Kombination aus Eingabe- und Ausgabefilterung zurückgeben. Diese Methode mindert gespeicherte XSS-Angriffe am besten.
- Die Validierung von Benutzereingaben ist eine weitere Sicherheitsmaßnahme. Wenn Sie beispielsweise die Standard-Eingabefelder so einstellen, dass nur Textdatentypen zulässig sind, können Benutzer keine Zahlen eingeben. Dies funktioniert gut bei Webformularen: Eingaben können validiert werden, um Angreifer daran zu hindern, bösartige Skripte über die Autorisierung hochzuladen. Webbrowser erlauben nur den Zugriff auf zulässige Ressourcen und ignorieren alle anderen Domänen. Eingefügte Skripte werden nicht ausgeführt, selbst wenn es einem Angreifer gelingt, XSS-Injection-Schwachstellen zu entdecken.
- Um Cross-Site-Scripting-Angriffe in jQuery zu verhindern, können Sie Benutzereingaben an einen jQuery-Selektor übergeben. Die gängigste Methode hierfür ist die Verwendung von location. Hash und die Übergabe des Selektors zum Rendern von HTML. jQuery kann das Problem erkennen und die Selektorlogik patchen, um zu überprüfen, ob Eingaben mit einem Hash beginnen.
- Sie können Ressourcen wie Bilder und Skripte angeben, die von der Herkunft der Website geladen werden können. Wenn ein Angreifer XSS-Payloads injiziert, kann er keine Ressourcen laden, die außerhalb der aktuellen Herkunft liegen. Der jQuery-Selektor kann das Risiko eines XSS-Angriffs oder einer Sicherheitslücke erheblich verringern.
Wenn Sie nicht vertrauenswürdige Daten an Ihre jQuery-Selektoren übergeben möchten, stellen Sie sicher, dass Sie die Werte mit der Funktion "js—escape" korrekt maskieren. Sie können XSS-Angriffe auch durch die Nutzung von Content Security Policies abwehren. Diese helfen Ihnen dabei, verschiedene Aspekte der Verwaltung externer Skripte zu kontrollieren, beispielsweise das Laden und Ausführen von Inline-Skripten.
Häufige Beispiele für XSS-Angriffe
Hier sind einige häufige Beispiele für XSS-Angriffe aus der Praxis:
- British Airways wurde 2018 von MageCart, einer bekannten Hackergruppe, angegriffen. Die Gruppe nutzte eine XSS-Sicherheitslücke in der JavaScript-Bibliothek aus. Kundendaten wurden an einen bösartigen Server mit einem Domainnamen gesendet, der dem der offiziellen Website ähnelte. Am Ende wurden Kreditkartendaten von über 380.000 Buchungstransaktionen gestohlen, was die Fluggesellschaft viel Geld kostete, bis der Angriff entdeckt wurde – leider zu spät.
- Fornite ist ein beliebtes Online-Multiplayer-Spiel, das Opfer eines XSS-Angriffs wurde. Eine unsichere SSO-Sicherheitslücke leitete Benutzer auf eine gefälschte Anmeldeseite um, auf der ihre Daten gestohlen wurden. Die Spieler verloren außerdem virtuelle Währungen innerhalb des Spiels, und aufgezeichnete Spieler-Chats wurden veröffentlicht.
- eBay hatte eine XSS-Sicherheitslücke, die Angreifern vollständigen Zugriff auf Verkäuferkonten ermöglichte. Die Angreifer manipulierten die Positionierung der eBay-Angebote und setzten ihre Angriffe auch nach der Entdeckung und Behebung der Sicherheitslücke durch eBay fort.
Fazit
Cross-Site-Scripting-Angriffe gehören zu den schwerwiegendsten Bedrohungen für die Websicherheit, da sie das Vertrauen in Online-Plattformen untergraben und Benutzerdaten gefährden. Mit dem Wissen um die verschiedenen Arten von XSS-Angriffen und der Anwendung geeigneter Präventionsmechanismen können Entwickler ihre Anwendungen sichern. Zu den geeigneten Maßnahmen gehören die Validierung von Eingaben, die Kodierung von Ausgaben und die Anwendung von Content-Sicherheitsrichtlinien.
Sicherheitsaudits und ausgefeilte Tools zur Erkennung von Bedrohungen sind unerlässlich, um eine sichere Online-Präsenz zu gewährleisten. Mit dem technologischen Fortschritt entwickeln sich auch die Methoden der Angreifer weiter, sodass Vorsicht oberstes Gebot ist. Durch die Priorisierung der XSS-Prävention können Unternehmen ihren Ruf schützen und die Integrität ihrer Online-Präsenz gewährleisten.
"FAQs
Bei XSS-Angriffen werden bösartige Skripte in Websites eingeschleust, damit Hacker auf sensible Benutzerdaten zugreifen können. XSS-Angriffe nutzen Schwachstellen in Webanwendungen aus und verwenden häufig Benutzereingaben oder manipulierte URLs.
Entwickler können XSS-Angriffe vermeiden, indem sie Benutzereingaben überprüfen, Ausgabedaten verschlüsseln und nur bösartige Skripte zulassen. Regelmäßige Sicherheitsüberprüfungen und Richtlinien zur Inhaltssicherheit reduzieren ebenfalls das Risiko.
XSS-Angriffe nutzen Webanwendungen aus, indem sie bösartige Skripte einschleusen, die in den Browsern der Benutzer ausgeführt werden, Sicherheitskontrollen umgehen und auf sensible Informationen zugreifen.
XSS muss vermieden werden, da es zu Datenlecks, finanziellen Verlusten und Reputationsschäden führen kann. Außerdem untergräbt es das Vertrauen der Benutzer und kann potenziell Malware oder Phishing-Angriffe nach sich ziehen.
Zu den Lösungen und Tools gehören Schwachstellenscanner, Webanwendungs-Firewalls und fortschrittliche Systeme zur Erkennung von Bedrohungen. Diese helfen dabei, Schwachstellen zu erkennen und die Ausführung bösartiger Skripte zu blockieren.
Ja. Eine WAF kann XSS-Angriffe blockieren, indem sie den Datenverkehr filtert und bösartige Skripte identifiziert, bevor sie mit der Anwendung interagieren können.
Beim XSS-Testing werden Schwachstellenscanner und Penetrationstest-Tools eingesetzt, um Angriffe zu simulieren und potenzielle Einstiegspunkte für bösartige Skripte zu finden.
Um sich vor neuen Bedrohungen zu schützen, sollten Sicherheitsscans auf XSS-Schwachstellen regelmäßig durchgeführt werden, idealerweise alle drei Monate.

