Original-URL des Artikels: https://www.golem.de/news/mxss-cross-site-scripting-in-der-google-suche-1904-140406.html    Veröffentlicht: 02.04.2019 14:56    Kurz-URL: https://glm.io/140406

MXSS

Cross-Site-Scripting in der Google-Suche

Aufgrund subtiler Unterschiede beim Parsen von HTML-Code gelang es einem Sicherheitsforscher, gängige Filtermechanismen zu umgehen. Betroffen waren zwei Javascript-Bibliotheken und die Google-Suche.

Cross-Site-Scripting-Lücken gehören zu den häufigsten Sicherheitsproblemen in Webanwendungen. Eine besonders spezielle Variante einer solchen Sicherheitslücke fand sich jetzt in der Google-Suche. Der Grund ist ein spezielles Verhalten von Browsern beim Verarbeiten des Noscript-Tags. Entdeckt hat das Problem der Sicherheitsexperte Masato Kinugawa von der Firma Cure53, der es an Google gemeldet hatte.

Die Details erklärt ein Hacker mit dem Pseudonym Liveoverflow in einem Youtube-Video. In modernen Webanwendungen ist es häufig üblich, dass man die Filterung von HTML-Daten nicht auf dem Server vornimmt, sondern auf dem Client. Das macht man insbesondere in Fällen, in denen teilweise HTML-Daten erlaubt sein sollen, etwa Formatierungen, andere wie beispielsweise Skripte dagegen nicht.

Filterung von HTML im Client

Dabei nutzt man den Browser-eigenen HTML-Parser, um Daten zu verarbeiten. Mit einem Template-Element in HTML ist es möglich, HTML-Daten zu parsen ohne sie direkt anzuzeigen. Anschließend kann man alle problematischen Tags und Attribute, die etwa eine Ausführung von Javascript ermöglichen, entfernen.

Ein subtiles Problem ergibt sich, wenn man ein solches Template-Element nutzt, um Eingabedaten mit einem Noscript-Tag zu verarbeiten. Der Noscript-Tag bietet Webseitenbetreibern die Möglichkeit, HTML-Code mitzuliefern, der nur angezeigt wird, wenn der Browser kein Javascript unterstützt. Oft wird das lediglich genutzt, um eine kurze Meldung anzuzeigen, die den Nutzer informiert, dass eine Webseite zwingend Javascript benötigt.

<#youtube id="lG7U3fuNw3A"> Dieser Noscript-Tag zeigt beim Parsen ein sehr spezielles Verhalten: Wenn Javascript aktiviert ist, wird der Inhalt zwischen dem Start und dem Ende des Noscript-Tags schlicht ignoriert. Wenn Javascript deaktiviert ist, wird der Inhalt hingegen als HTML interpretiert.

Sprich: Der Parser verhält sich je nach Situation unterschiedlich. Beim Parsen mit einem Template-Element, was wie oben beschrieben häufig für Filterung genutzt wird, ist Javascript deaktiviert.

Unterschiedliche Parser mit und ohne Javascript

Der XSS-Code, der nun den Bug triggert, lautet: Beim Filtern mit dem Template-Element und ohne Javascript ist dies korrekter HTML-Code. Der Teil in den Anführungszeichen wird, da es ein Attribut ist, nicht weiter beachtet.

Wird das Ganze jedoch im Browser gerendert, ist Javascript aktiviert. Der Teil

Verwandte Artikel:
Datenschutz: Facebook speicherte Millionen Passwörter im Klartext   
(21.03.2019, https://glm.io/140173 )
Mobile: Foxconn will weniger Android-Smartphones produzieren   
(04.04.2019, https://glm.io/140458 )
Discover: Google erweitert Suche und Android-Feed   
(25.09.2018, https://glm.io/136759 )
Google: Neue Android-Q-Beta bringt App-Blasen   
(04.04.2019, https://glm.io/140456 )
Facebook, Google, Twitter: Mozilla fordert klare Regeln zur Werbetransparenz   
(04.04.2019, https://glm.io/140452 )


© 1997–2019 Golem.de, https://www.golem.de/