Cross-Site-Scripting-Angriffe sind Exploits von Webanwendungen und Webservern, die aufgrund einer Schwachstelle im Server- oder Anwendungscode auftreten. Sie sind besonders gefährlich, weil es für Sicherheits- oder Entwicklungsteams schwierig ist, eine XSS-Schwachstelle zu erkennen. Auch die Auswirkungen eines Angriffs lassen sich nur schwer feststellen, bevor der daraus folgende Sicherheitsvorfall weit fortgeschritten ist. Um XSS-Angriffe zu verhindern, muss Ihr Team wissen, wie sie aussehen und ob Ihre Systeme dafür anfällig sind.
- Wie funktioniert Cross-Site-Scripting?
- 3 häufige Arten von Cross-Site-Scripting-Angriffen
- Die 5 größten Risiken im Zusammenhang mit XSS-Angriffen
- So erkennen Sie, ob Sie für XSS-Angriffe anfällig sind
- Lässt sich Cross-Site-Scripting verhindern?
- Häufig gestellte Fragen (FAQs)
- Fazit: Cross-Site-Scripting gefährdet Daten, Anwendungen und den Ruf von Unternehmen
Wie funktioniert Cross-Site-Scripting?
Ein Cross-Site-Scripting-Angriff tritt auf, wenn ein Angreifer schädlichen Code oder ein Skript in den Seitencode einer Webanwendung einschleust. Dies geschieht typischerweise auf dynamischen Webseiten, die sich häufig ändern oder von Benutzern aktiv manipuliert werden können, beispielsweise bei einer Suchleiste, in die Benutzer Suchanfragen eingeben können.
Dem ursprünglichen Code der Webseite wird vertraut. Wenn ein Benutzer normalerweise die Webseite aufruft, lädt sein Browser sie wie angewiesen. Hat ein Angreifer jedoch neuen Code in die Webseite eingefügt, wird sie möglicherweise nicht wie ursprünglich vorgesehen geladen, ohne dass der Benutzer oder der Browser etwas davon bemerkt. Der neue schädliche Code soll Daten wie Cookies oder Anmeldedaten aus der Webanwendung stehlen.

Cross-Site-Scripting-Angriffe sind gefährlich, weil sie schwer zu erkennen sind. Die Schwachstelle befindet sich im Code und ist für Sicherheitsteams nur sichtbar, wenn sie die Programmiersprache kennen, in der die Seite geschrieben ist. Oft müssen Sie Software zur Anwendungsüberprüfung einsetzen, um Anzeichen eines XSS-Angriffs zu finden. Eine manuelle Suche erfordert zu viel Aufwand, und Mitarbeitende könnten die Schwachstelle übersehen, insbesondere wenn sie die Sprache nicht kennen.
Wenn Ihre Webanwendung einem XSS-Angriff zum Opfer fällt, kann es sich um einen gespeicherten, reflektierten oder auf dem Document Object Model (DOM) basierenden Angriff handeln. XSS-Angriffe bergen zahlreiche Sicherheits- und Geschäftsrisiken, darunter den Diebstahl von Anmeldedaten und eine Schädigung des Unternehmensrufs. Um festzustellen, ob Sie anfällig sind, sollten Sie Ihre Webanwendungen testen, auf eindeutige Anzeichen eines Angriffs achten und Softwarelösungen einsetzen, die nach Schwachstellen in Ihrem Code und Ihren Anwendungen suchen.
3 häufige Arten von Cross-Site-Scripting-Angriffen
Gespeichertes XSS, reflektiertes XSS und DOM-basiertes XSS sind die drei häufigsten Arten von Cross-Site-Scripting-Angriffen. Sie unterscheiden sich darin, ob sie die Server- oder die Clientseite der Webanwendung betreffen.
Gespeichertes XSS
Bei einem gespeicherten XSS-Angriff wird das schädliche Skript in den eigentlichen Code der Webanwendung geschrieben und betrifft sowohl die Client- als auch die Serverseite. Es verbleibt dauerhaft im Code dieses Servers oder dieser Anwendung, bis Administratoren oder eine automatisierte Sicherheitslösung es entfernen. Gespeichertes XSS ist durchgehend eine schwerwiegende Form eines XSS-Angriffs, da der schädliche Code stets in der Anwendung vorhanden ist.
Wenn ein Angreifer beispielsweise ein schädliches Skript auf dem Webserver eines Finanzdienstleisters in eine Seite schreibt, auf der Benutzer ihre Finanzdaten eingeben, kann der Angreifer diese Daten jedes Mal stehlen, wenn jemand die Seite verwendet. Da der schädliche Code im Webserver geschrieben steht, betrifft er jede Nutzung der Webanwendung. Die Benutzer wissen nicht, dass der Code auf der Finanzdienstleistungsseite schädlich ist, weil er legitim aussieht, und verwenden die Seite weiter, bis der Angriff aufgedeckt wird.
Reflektiertes XSS
Reflektiertes XSS trägt seinen Namen, weil ein Angreifer schädlichen Code in eine URL oder Anfrageparameter einschleust und die Antwort des Webservers diesen eingeschleusten Code zurückspiegelt. Reflektiertes XSS wird nicht langfristig im Backend der Anwendung oder im Servercode gespeichert. Der Angriff erfolgt innerhalb der Grenzen der Benutzereingabe, etwa der URL oder der Anfrageparameter. Reflektiertes XSS kann schwerwiegend sein, wenn ein Angreifer damit Sitzungscookies oder Benutzeranmeldedaten stiehlt.
Ein Beispiel für reflektiertes XSS wäre ein Angreifer, der die Anfrageparameter eines Softwareentwicklers abfängt, der auf eine beliebte Entwicklungsanwendung zugreifen möchte. Der Angreifer verändert die URL subtil, sodass der Benutzer statt der erwarteten legitimen Seite eine anfällige Webseite aufruft. Von dort aus kann der Angreifer verschiedene Aktionen durchführen, um die Arbeit des Entwicklers zu kompromittieren, etwa die von ihm auf der Seite eingegebenen Informationen zu stehlen.
DOM-basiertes XSS
Bei einem DOM-basierten XSS-Angriff manipuliert der Angreifer das Document Object Model (DOM) im Browser des Benutzers. Der eigentliche Code der Webanwendung ändert sich serverseitig nicht, wird auf der Benutzerseite jedoch schädlich ausgeführt. DOM-basiertes XSS ist besonders schwer zu erkennen, weil die Änderungen clientseitig innerhalb des Document Object Models erfolgen und den Webserver möglicherweise nie erreichen.
Wenn ein Angreifer beispielsweise Teile einer URL stiehlt und sie in einer JavaScript-Funktion verwendet, die die dynamische Codeausführung ermöglicht, könnte er den clientseitigen Code einer Webanwendung. Wenn der Angreifer die Hauptseite eines Customer-Relationship-Management-Produkts (CRM) manipuliert, ist die eigentliche HTTP-Antwort der Seite zwar unverändert, der clientseitige Code jedoch nicht. Der Angreifer könnte mithilfe der URL-Fragmente einen Angriff starten.
Die 5 größten Risiken im Zusammenhang mit XSS-Angriffen
Cross-Site-Scripting-Angriffe sind berüchtigt dafür, schwer auffindbar zu sein, weil sie sich als legitimes Verhalten einer Webseite tarnen. Außerdem ermöglichen sie Angreifern, die Anmeldedaten und Sitzungscookies Ihrer Webanwendung zu stehlen, und können sowohl allgemeine Störungen in normalen Geschäftsprozessen als auch eine Schädigung des Rufs Ihres Unternehmens verursachen.
XSS-Angriffe sind schwer zu erkennen
Da XSS-Angriffe völlig legitime Prozesse von Webanwendungen manipulieren, sind sie schwer zu erkennen. Außerdem betreffen XSS-Angriffe häufig eine bestimmte Art von Code, meist JavaScript. Selbst ein Sicherheits- oder Entwicklungsadministrator weiß möglicherweise nicht, wie sich der Angriff eindämmen lässt, wenn er die Programmiersprache, in der der Angriff geschrieben ist, nicht kennt – vorausgesetzt, er erkennt überhaupt, dass ein XSS-Angriff stattgefunden hat.
Angreifer können Ihre Anmeldedaten stehlen
In einem der schlimmsten XSS-Szenarien kann ein Angreifer Anmeldedaten stehlen, sobald der Benutzer sie auf einer Webseite eingibt, von deren Hack er nichts bemerkt. Zunächst muss der Angreifer eine Webseite kompromittieren, auf der sich Benutzer bei einem Dienst oder einer Anwendung anmelden. Anschließend muss er sich erfolgreich anmelden und den vom Benutzer eingegebenen Code stehlen, um ihn selbst für die Anmeldung bei der Anwendung wiederzuverwenden – idealerweise ohne entdeckt zu werden.
Handelt es sich um ein Konto mit hohen Berechtigungen, ist dies noch gefährlicher. Der Angreifer könnte seine Berechtigungen ausweiten und anschließend auf vertraulichere Daten zugreifen.
Angreifer können Sitzungscookies kapern
Ein Angreifer kann ein Skript in eine für XSS anfällige Website einschleusen und Dateien verwenden, um Informationen aus Sitzungscookies zu stehlen. Wenn er das Skript so programmiert, dass es die Sitzungsdaten stiehlt, ohne beim Benutzer einen verdächtigen Eindruck zu erwecken, bemerkt dieser nicht einmal, dass ein Angriff stattgefunden hat.
Wenn jemand Sitzungscookies stiehlt, kann er eine Webseitensitzung wiederholen. Dadurch könnte er möglicherweise auf vertrauliche Daten der Anwendung zugreifen und Änderungen an der Webanwendung vornehmen. Dieser Angriff ähnelt einem Diebstahl von Anmeldedaten und könnte zu einer vergleichbaren Situation führen, wenn das Cookie Anmeldeinformationen gespeichert hat.
XSS-Angriffe sind zeitaufwendig und ärgerlich
Wenn ein XSS-Angriff eine Seite lahmlegt oder eine Weiterleitung in das falsche Fenster verursacht, ist das nicht nur für die IT-Abteilung Ihres Unternehmens, sondern auch für alle anderen Benutzer, die auf die Seite zugreifen müssen, ein Ärgernis. Dies gilt besonders für Webanwendungen, die für den Geschäftsbetrieb unverzichtbar sind und von Mitarbeitenden häufig aufgerufen werden. Wenn die Seite längere Zeit nicht funktioniert, ist das nicht nur ärgerlich und störend, sondern stellt auch eine Bedrohung für kritische Organisationsprozesse dar.
Erfolgreiche Angriffe können Ihrem Unternehmen schaden
Wenn eine Webseite ausfällt oder ein Angreifer sogar den Inhalt der Seite verfälscht, kann der Schaden für Ihr Unternehmen erheblich sein. Eine Webanwendung, die sich ungewöhnlich verhält, beeinträchtigt sowohl den Ruf der Anwendung als auch den Ruf der Organisation, die sie betreibt. Erlangt ein Angreifer Zugriff auf ein privilegiertes Konto, könnte er sogar vertrauliche Kundendaten kompromittieren. Verfälschte Inhalte wären eine seltenere Angriffsart, für einen hochqualifizierten Angreifer sind sie jedoch nicht unmöglich.
Wenn Sie sich Sorgen über die Auswirkungen eines Angriffs auf eine Webanwendung auf Ihr übergeordnetes Unternehmensnetzwerk machen, erfahren Sie mehr über Netzwerksicherheit.
So erkennen Sie, ob Sie für XSS-Angriffe anfällig sind
Auch wenn es schwierig ist, sofort zu erkennen, dass Sie angegriffen wurden, können Ihre Sicherheits- und IT-Teams dennoch Maßnahmen ergreifen, um sich über Cross-Site-Scripting zu informieren. Um festzustellen, ob die Webserver und Anwendungen Ihres Unternehmens möglicherweise für XSS anfällig sind, testen Sie sie, achten Sie auf die offensichtlicheren Anzeichen und überprüfen Sie Sicherheitslücken kontinuierlich.
Tests durchführen oder einen Pentester beauftragen
Wenn Sie über erfahrenes Sicherheits- oder IT-Personal verfügen, können Sie Ihren eigenen Code für Webserver und Webanwendungen selbstverständlich selbst testen. Die Befolgung von Richtlinien anerkannter Sicherheitsexperten wie OWASP ist ein guter Ausgangspunkt, um Ihre Systeme vor XSS zu schützen.
Ebenso sinnvoll ist es, einen Penetrationstester zu beauftragen. Pentester werden speziell damit beauftragt, in Ihre Systeme einzudringen und Schwachstellen aufzudecken. Wenn Sie einen Pentester mit dem Schwerpunkt auf Webanwendungen und Codeschwachstellen beauftragen, erfahren Sie mit größerer Wahrscheinlichkeit, ob Ihre Webseiten für XSS anfällig sind.
Erfahren Sie mehr über dynamische Anwendungssicherheitstests, ein nützliches Verfahren zum Aufdecken von Schwachstellen in Webanwendungen.
Achten Sie auf offensichtliche Anzeichen eines Angriffs
Viele XSS-Angriffe sind nicht offensichtlich. Achten Sie dennoch auf die auffälligeren Anzeichen dafür, dass gerade ein Angriff stattfindet. Wenn Ihre Webseiten fehlerhaft weiterleiten oder ein scheinbar authentifizierter Benutzer plötzlich ungewöhnliche Änderungen in einer privilegierten Webanwendung vornimmt, sollten Sie den Code der Webseite genauer untersuchen. Nur wenige Angriffe sind offensichtlich – achten Sie sorgfältig auf diejenigen, die es sind.
Regelmäßig nach Schwachstellen suchen
Führen Sie regelmäßig Schwachstellenscans in Ihrer gesamten Infrastruktur durch. Um XSS-Schwachstellen zu finden, sollten Sie jedoch insbesondere Ihre Webanwendungen scannen. Tools zur Schwachstellensuche berücksichtigen Muster und identifizieren Probleme, für deren manuelle Suche Sicherheitsteams keine Zeit haben. Einige Tools zur Schwachstellensuche greifen außerdem auf Datenbanken oder Bibliotheken mit bekannten Bedrohungssignaturen oder -indikatoren zurück und helfen Ihnen, diese in Ihren eigenen Systemen und Anwendungen zu finden.
Lesen Sie mehr über unsere Auswahl der besten Schwachstellenscanner für Webanwendungen sowie über die Kriterien, die Sie bei einem Scanner berücksichtigen sollten.
Lässt sich Cross-Site-Scripting verhindern?
Unternehmen können Cross-Site-Scripting verhindern. Dazu müssen sich ihre Sicherheits- und Entwicklungsteams für Webanwendungen jedoch konsequent guten Sicherheitspraktiken widmen. Sie müssen:
- den Anwendungscode regelmäßig auf Probleme überprüfen: Analysieren Sie den Code während des gesamten Entwicklungslebenszyklus, um festzustellen, ob er Schwachstellen aufweist.
- Ausgaben kodieren und Eingaben validieren: Kodieren Sie Daten, während sie in eine Webanwendung geschrieben werden, und validieren und bereinigen Sie Benutzercodeeingaben bevor Sie sie an den Browser senden.
- Fortschrittliche Sicherheitstools verwenden: Software zur Sicherheit von Webanwendungen schützt Webanwendungen und ist besonders nützlich zur Verhinderung von XSS.
- Gute DevOps-Praktiken vermitteln: Alle Webentwickler sollten über XSS-Angriffe und Möglichkeiten zu ihrer Eindämmung durch die Erstellung stabilen, sicheren Codes Bescheid wissen.
Erfahren Sie mehr über die Verhinderung von XSS-Angriffen, einschließlich echter Angriffsbeispiele und Tools, die Ihrem Unternehmen helfen können.
Häufig gestellte Fragen (FAQs)
Was ist ein reales Beispiel für XSS?
Im Jahr 2018 wurde British Airways angegriffen – von einer Hackergruppe, die eine XSS-Schwachstelle in einer JavaScript-Bibliothek nutzte. Die Hacker sendeten Kundendaten an einen Server, der versuchte, den Domainnamen von British Airways zu imitieren. Bevor jemand von dem Angriff erfuhr, stahlen die Hacker Kreditkartendaten aus mehr als 350.000 Transaktionen. Dies ist ein gutes Beispiel dafür, wie lange es dauern kann, einen XSS-Angriff zu erkennen.
Was können Hacker mit XSS tun?
Angreifer können XSS zwar zum Diebstahl von Daten und Cookies verwenden, aber auch weniger schädliche Ziele verfolgen. Ein Angreifer könnte Cross-Site-Scripting nutzen, um die Leistung einer konkurrierenden Website zu beeinträchtigen oder unangemessene Inhalte zu einer legitimen Seite hinzuzufügen. Eine Rufschädigung ist jedoch ebenfalls schädlich.
Was ist die Ursache von XSS-Angriffen?
Cross-Site-Scripting-Angriffe treten auf, weil der Inhalt einer Webanwendungsanfrage nicht ordnungsgemäß validiert wurde. Zwar ist es schwierig festzustellen, ob Ihr Webcode für XSS anfällig ist, doch Entwicklungs- und Sicherheitsteams können diese Sicherheitslücken schließen, indem sie beispielsweise alle Eingaben validieren, bevor sie eine Benutzeranfrage an den Webbrowser senden.
Fazit: Cross-Site-Scripting gefährdet Daten, Anwendungen und den Ruf von Unternehmen
Cross-Site-Scripting-Angriffe gefährden Webanwendungen und Server und stellen Sicherheits- und Webentwicklungsteams vor Herausforderungen, die möglicherweise nicht einmal wissen, dass sie anfällig sind. Zwar sind die Möglichkeiten des Menschen, Schwachstellen im Code zu finden und Sicherheitsverletzungen zu erkennen, begrenzt. Der Einsatz automatisierter Sicherheitslösungen wie Schwachstellenscanner und Tools zum Testen der Anwendungssicherheit hilft jedoch dabei.
Sie sollten den Code von Webanwendungen testen und sichere Entwicklungsprozesse schaffen, damit während der Entwicklung seltener Schwachstellen entstehen. Auch wenn die Verhinderung von XSS-Schwachstellen und -Angriffen überwältigend erscheinen mag, tragen die sorgfältige Pflege Ihres Codes und Investitionen in automatisierte Sicherheitslösungen langfristig zum Schutz Ihrer Webanwendungen bei.
Wenn Sie mehr über die Sicherheit anderer Anwendungen erfahren möchten, nicht nur von Webanwendungen, lesen Sie mehr über die verschiedenen Arten der Anwendungssicherheit. Dazu gehören die Sicherheit von Cloud-Anwendungen, mobilen Anwendungen sowie Daten- und Unternehmensanwendungen.

