Wer sich mit IT-Sicherheit beschäftigt, kennt Cross-Site-Scripting (XSS) und hält es wahrscheinlich für eine Klasse schwerwiegender Verwundbarkeiten. Das ist plausibel, aber vielleicht dennoch übertrieben.
Eine Webanwendung ist anfällig für Cross-Site-Scripting, wenn Angreifer ihr HTML- und JavaScript-Code unterjubeln können, welchen der Browser eines Nutzers nicht vom echten Code der Anwendung unterscheiden kann. Damit gewinnen Angreifer die Möglichkeit, im Sicherheitskontext fremder Benutzersitzungen zu agieren. So könnte ein Angreifer beispielsweise im Namen einen angemeldeten Benutzers Daten abrufen und ändern, aber auch im Kontext der Webanwendung mit dem Benutzer interagieren – ein Man-in-the-Middle-Angriff zwischen Benutzer und Anwendung.
Große Aufmerksamkeit wird dem Cross-Site-Scripting aus mehreren Gründen zuteil:
- Cross-Site-Scripting-Verwundbarkeiten kommen häufig vor. Wer interaktive Webanwendungen entwickelt und nicht von Anfang an stringente Maßnahmen dagegen ergreift, wird früher oder später unweigerlich XSS-Verwundbarkeiten in seine Anwendung haben.
- Cross-Site-Scripting ist leicht zu erklären und zu verstehen. Die einfachsten Varianten lassen sich mit rudimentären HTML- und JavaScript-Kenntnissen unter Verwendung eines gewöhnlichen Webbrowsers demonstrieren – die ideale Fallstudie für jede Sicherheitsschulung.
- Cross-Site-Scripting unterläuft mehrere Sicherheitmechanismen – zum Beispiel die Same-Origin-Policy und jede Benutzerauthentisierung – und gewährt dem erfolgreichen Angreifer volle Kontrolle über jede betroffene Benutzersitzung. Verwundbarkeiten sind daher für vielfältige Ziele ausnutzbar und die Auswirkungen lassen sich kaum wegdiskutieren.
Cross-Site-Scripting taucht deshalb zu Recht von Anfang an als eigene Kategorie in den OWASP-Top-10 („The Ten Most Critical Web Application Security Risks“) auf, obwohl es sich rein technisch eigentlich um eine Spezialfall der allgemeineren Kategorie „Injection“ handelt.
✽✽✽
In einem Artikel vom 25. Oktober berichtet Golem.de, man habe in mehreren Online-Shops – allesamt Träger des „Safer Shopping“-Siegels eines bekannten Plakettenkonzerns – Cross-Site-Scripting-Verwundbarkeiten gefunden. Nahezu dieselbe Geschichte war in anderer Besetzung, aber mit demselben Protagonisten bereits neun Jahre zuvor erschienen. Das nimmt nicht Wunder, denn die technische Sicherheit der Shopsoftware gehört gar nicht zum Prüfumfang des Safer-Shopping-Siegels.
Was dies über kommerzielle Gütesiegel aussagt, deren Verfechter sich gerade zu einem neuen Anlauf formieren, sei dahingestellt. Interessanter finde ich die darin verborgene Beobachtung, dass sich offenbar eine Dekade lang niemand ernsthaft an immer wieder auftretenden Cross-Site-Scripting-Verwundbarkeiten in deutschen Online-Shops stört.
Wo Verwundbarkeiten spürbare Auswirkungen haben, also tatsächlich ausgenutzt werden, tut man für gewöhnlich etwas dagegen oder macht öffentlich Radau, falls die Verantwortlichen andere sind als die Opfer. Wo man nichts sieht und hört, gibt es hingegen augenscheinlich kein wirkliches Problem. Gewiss, dies ist nur eine Heuristik, doch sie hat eine ökonomische Grundlage: Je höher die Schäden, desto größer der mögliche Nutzen von Sicherheitsmaßnahmen; je geringer die Schäden, desto weniger lohnt sich Sicherheit.
Dass eine „klaffende Sicherheitslücke“ (WichtigtuerExpertenjargon) dennoch nicht ausgenutzt wird, kommt häufiger vor als gedacht, denn für den Angreifer muss sich der gesamte Angriff lohnen und nicht nur im Prinzip möglich sein. Die Verfügbarkeit ausnutzbarer Verwundbarkeiten ist dabei nur ein Faktor unter mehreren. Auf den zweiten Blick zeigen sich einige Einschränkungen, die prinzipiell mögliche Cross-Site-Scripting-Angriffe auf die Nutzer von Online-Shops unattraktiv machen können.
Als Angriffsziele in einem Online-Shop kommen für ökonomisch motivierte Angreifer insbesondere das Auslösen von Transaktionen und damit Lieferungen sowie der Zugriff auf einsetzbare Zahlungsdaten (z.B. vollständige Kreditkartendatensätze) oder Kundenpasswörter in Frage. Gegen lukrative Angriffe auf der Grundlage von Cross-Site-Scripting sprechen:
- Der begrenzte Wirkungsbereich von Cross-Site-Scripting-Angriffen:
Die Auswirkungen bleiben auf eine Anzahl von Benutzersitzungen und Benutzern beschränkt. Eine Rechteausweitung über die Möglichkeiten eines angemeldeten Benutzers hinaus – etwa zum uneingeschränkten Zugriff auf gespeicherte Kundendaten und Zahlungsmittel – ist von dort aus normalerweise nicht möglich. - Die Gefahr, aufzufallen:
Betrügerische Bestellungen bleiben nur dann nachhaltig möglich, wenn sie im Rauschen des normalen Shopbetriebes nicht auffallen. Bestellen jedoch auf einmal binnen kurzer Zeit Hunderte Nutzer das teuerste Produkt, wird sich darüber wahrscheinlich jemand wundern. Hinzu kommen Logfiles, in denen Cross-Site-Scripting-Angriffe wahrscheinlich Spuren hinterlassen. Anfangs weniger auffällig wäre der Zugriff auf Zahlungsdaten, deren späterer Missbrauch jedoch bald auffällt und zur Sperrung aller potenziell betroffenen Zahlungsmittel führen kann. - Logistikanforderungen an den Angreifer:
Wer sich auf fremde Rechnung Waren liefern lassen möchte, steht vor einem Problem: Er muss Lieferungen annehmen können, ohne sich erwischen zu lassen. Das wird mit jeder Wiederholung schwerer. Wer Zahlungsmittel missbraucht, steht später vor demselben Problem. Direkt das eigene Konto aufzufüllen, ist weniger schlau. - Abhängigkeit von der Kooperation der Betroffenen:
Wer Cross-Site-Scripting-Verwundbarkeiten ausnutzt, ist auf die Kooperation seiner Opfer angewiesen. Jeder betroffene Nutzer muss wenigstens einmal auf einen vom Angreifer präparierten Link geklickt oder bestimmte Funktionen des Shops besucht haben und möglicherweise in derselben Sitzung auch noch bestimmte Handlungen (z.B. Login oder Bestellvorgang mit Eingabe von Zahlungsdaten) vorgenommen haben, damit der Angriff Erfolg hat. Wer sich aktiv um diese Kooperation bemüht, fällt leichter auf. Hinzu kommt unter Umständen die Schwierigkeit, Nischenzielgruppen wie die aktiven Nutzer eines bestimmen deutschen Online-Shops überhaupt anzusprechen.
Eine Reihe denkbarer Angriffserfolge wird damit unwahrscheinlich, das unbemerkte, massenhafte Auslesen von Zahlungsdaten oder Benutzerkennungen nebst Passwörtern ebenso wie betrügerische Warenbestellungen im großen Maßstab.
Weit verbreitete und vielfältig ausnutzbare Verwundbarkeiten zu vermeiden, ist sicher dennoch eine gute Idee, schon weil sich das Gefüge der Risikofaktoren schwer überblicken lässt. Dass sich offensichtliche Nachlässigkeiten nicht in spektakulären Angriffen niederschlagen, halte ich jedoch für plausibel. Insofern liegen der Plakettenkonzern und seine Kunden möglicherweise richtig, wenn sie dem Thema Cross-Site-Scripting wenig Aufmerkamkeit widmen.