Cross-Site-Scripting: Einfallstohr für Angriffe

Geschrieben von Anna Tiede, veröffentlicht am 05.12.2019

Cross-Site-Scripting ist eine der häufigsten Einfallstohre für Angriffe in Webapplikationen. Wir geben Ihnen einen kurzen Überblick, wo diese Sicherheitslücken entstehen und wie Sie diesen Gefahren vorbeugen können.

Das Cross-Site-Scripting bezeichnet das Ausnutzen einer Sicherheitslücke in Webapplikationen, indem Informationen in einen vermeintlich sicheren Kontext mit dem Ziel übertragen werden an personenbezogene Daten zu gelangen. Die manipulierten Scripte können z.B. über eine Eingabemaske eines Kontaktformulars oder in Anmeldeformularen übermittelt werden. Zumeist wird dieser Angriff über weit verbreitete Script-Sprachen geführt, insbesondere über JavaScript. Der Angreifer fügt in das JavaScript-Format einen Code ein, der von dem Browser bei der Übertragung von einem Aufruf der Webseite zum nächsten ausgeführt wird.  So kann der Schadcode in einen vermeintlich sicheren Kontext eingebettet werden. Dadurch ist es dem Angreifer möglich sensible Daten über Cookies, z.B. aus Eingabeformularen, auszulesen.  

Angriffsarten 

Beim Cross-Site-Scripting wird zwischen unterschiedlichen Angriffsvorgängen differenziert:  

Reflektierte Angriffe: Dies ist der Fall, wenn der Angriff temporär über den Server erfolgt und von dem Benutzer selbst ausgeführt werden muss, beispielsweise durch den Aufruf eines vom Angreifer manipulierten Links. Der Server übernimmt bei ungenügender Überprüfung den Schadcode und führt eine vom Angreifer manipulierte Webseite aus, die vertrauenswürdig scheint. Anschließend kann der Benutzerbeispielsweise durch Anmeldemasken, sensible Daten preisgeben, die über den Server zum Angreifer gelangen. 

Persistente Angriffe:Persistente Cross-Site-Angriffe liegen vor, wenn die injizierten Eigenschaften permanent gespeichert sind und von allen Besuchern einer Webseite ausgeführt werden, beispielsweise bei einer vom Angreifer präparierten Eingabemaske. Dieser Angriff basiert ebenfalls auf einer Sicherheitslücke des ServersAuch hier wird der Schadcode über einen manipulierten Link an den Server übergeben, der jedoch nicht von dem Benutzer selbst angeklickt werden muss. Der Angreifer kann den manipulierten Link bereits durch einen Eintrag in einen nicht ausreichend geschützten Forum der Webseite zuführen. 

Lokale Angriffe:Anders als bei den beiden anderen Angriffsarten ist beim lokalen Cross-Site-Scripting keine Sicherheitslücke im Server erforderlich. Der präparierte Code wird direkt im Browser des Benutzers ausgeführt und bleibt dort zumeist unbemerkt. Auch hier ist jedoch ein vorheriges Klicken eines manipulierten Links nötig, um ein clientseitiges JavaScript auf dem Browser zu platzieren. Der Link wird beispielweise per E-Mail an den Benutzer versandt.  Diese Angriffsart ermöglicht es sensible Daten über aufgerufene Webseiten abzugreifen sowie lokale Daten auf dem Gerät selbst zu verändern.  

Schutzmaßnahmen 

Der Schutz vor Cross-Site-Scripting-Angriffen ist für den Webseitenbetreiber aufwendig.  

Um keine Plattform für einen Cross-Site-Scripting Angriff zu bieten, ist es notwendig alle eingehenden Eingaben als nicht vertrauensvoll zu betrachtenvor der weiteren Verarbeitung mit der Serverseite abzugleichen und zulässige Eingaben im Vorfeld zu definieren (sog. Whitelists). So wäre es beispielsweise möglich, dass Eingabemasken die Eingabe von JavaScript-Codes gar nicht erst zulassen.  Praktisch ist diese Verhinderungsmöglichkeit etwa dann umsetzbar, wenn die Eingabemöglichkeiten auf eine bestimmte Anzahl begrenzt ist oder die Eingabe von JavaScript-Codes nicht möglich ist. 

Eine andere Möglichkeit ist es die Eingaben des Benutzers zu validieren und durch Zeichenreferenzen zu ersetzenIn diesem Fall werden die Metazeichen als normale Zeichen vom Server gewertet. Das führt dazu, dass ein potenziell eingefügter Schadcode vom Server nicht decodiert werden kann. Die gängigen Programmierungs- und Scriptsprachen bieten zur Zeichenersetzung bereits Funktionen an.  

Auf Seiten des Webbenutzers lässt sich lediglich lokales Cross-Site-Scripting verhindern, indem dem Browser generell verboten wird, Java-Script auszuführen. Für einige Browser existieren zudem Anwendungen, die Cross-Site-Scripting-Angriffe erkennen können. Überdies ist es entscheidendempfangene Links nicht beliebig anzuklicken und zu gründlich prüfen.  

Fazit 

Schützen Sie sich von Beginn an vor Cross-Site-Scripting, indem Sie Ihre Eingabemaskeentsprechend einstellen, sodass manipulierte Eingaben erst gar nicht ermöglicht werdenAußerdem raten wir Ihnen Ihre Mitarbeiter auf diese Thematik zu sensibilisieren.  

Für Rückfragen und weitere Auskünfte zu diesem Thema können Sie sich gern an uns wenden.