77 % der Websites nutzen mindestens eine anfällige JavaScript-Bibliothek
Tim Kadlec
29. März 2017
0 Min. LesezeitVor Kurzem wurde eine Studie veröffentlicht, laut der etwa 37 % der Websites mindestens eine JavaScript-Bibliothek mit einer bekannten Schwachstelle enthalten. Als wir über die Ergebnisse schrieben, erwähnten wir, dass die Realität unserer Einschätzung nach mit ziemlicher Sicherheit schlimmer ist.
Das ist sie. Tatsächlich sogar viel schlimmer.
Wir haben mit den 5.000 meistbesuchten URLs von Alexa einen eigenen Test durchgeführt und festgestellt, dass sage und schreibe 76,6 % davon mindestens eine anfällige Bibliothek enthalten. Wenn Sie wissen möchten, wie wir den Test durchgeführt haben: Die Details finden Sie weiter unten. Oder Sie können direkt zu den Ergebnissen springen.
Der Test
Für die Tests haben wir die 5.000 meistbesuchten URLs von Alexa herangezogen. Einige URLs lieferten beim Aufruf Fehler. Deshalb sind wir in der Alexa-Liste weiter nach unten gegangen, bis wir 5.000 Seiten hatten, die alle erfolgreich geladen wurden.
Wir haben jede URL mit WebPageTest getestet. WebPageTest lud jede Seite in Chrome und führte anschließend benutzerdefiniertes JavaScript aus, um die Version einiger JavaScript-Bibliotheken zu ermitteln.
Um beispielsweise die verwendete jQuery-Version zu ermitteln, wurde nach dem Laden der Seite folgender Code ausgeführt:
Beim ersten Durchlauf haben wir die folgenden Bibliotheken überprüft:
jQuery
Handlebars
Mustache
React
Angular
Ember
jQuery UI
YUI
Dojo
Für jede erkannte Version haben wir anschließend die Open-Source-Schwachstellendatenbank von Snyk geprüft, um herauszufinden, wie viele Bibliotheken bekannte Schwachstellen aufwiesen.
Die wenig erfreulichen Ergebnisse
Wie bereits erwähnt, ist die Sicherheit von JavaScript-Bibliotheken erschreckend schlecht – das lässt sich einfach nicht schönreden. Von den 5.000 Websites verwenden 3.831 (76,6 %) eine JavaScript-Bibliothek mit mindestens einer bekannten Schwachstelle.

Angesichts des ohnehin hohen Prozentsatzes klingt es vielleicht seltsam, aber wie schon im ursprünglichen Bericht ist die Realität wahrscheinlich noch schlimmer. Wir haben hier neun JavaScript-Bibliotheken getestet. Die Auswahl an JavaScript-Frameworks und -Bibliotheken für Entwickler umfasst Hunderte von Optionen. Unsere Testobjekte gehören zu den beliebtesten. Der Prozentsatz dürfte daher nicht allzu stark steigen, doch ein Anstieg um einige Prozentpunkte ist so gut wie sicher.
Und auch hier haben wir lediglich clientseitige JavaScript-Bibliotheken von Drittanbietern auf bekannte Schwachstellen geprüft. Die serverseitige Verwendung wurde ebenso wenig berücksichtigt wie individuell entwickeltes JavaScript. Außerdem kommen täglich neue Schwachstellen in unsere Datenbank hinzu – es gibt noch weitere, auch wenn sie bisher nicht öffentlich bekannt sind.
jQuery
Wie nicht anders zu erwarten, ist jQuery die beliebteste der von uns getesteten Bibliotheken – seine enorme Verbreitung ist mittlerweile gut dokumentiert. Auf 79 % der 5.000 meistbesuchten URLs konnten wir jQuery erkennen.
Obwohl jQuery keine besonders anfällige Bibliothek ist (es gibt fünf bekannte Schwachstellen, die jeweils in späteren Versionen behoben wurden), sorgt seine Beliebtheit für reichlich Probleme.
Wie sich herausstellte, sind selbst dann, wenn wir nur nach jQuery suchen, 75,1 % der Websites mit einer Version im Einsatz, die mindestens eine Schwachstelle aufweist. Das liegt vor allem daran, wie alt die meisten in der Produktion verwendeten jQuery-Bibliotheken sind. 17,4 % der dort gefundenen jQuery-Versionen sind älter als fünf Jahre. Das deckt sich ziemlich gut mit dem ursprünglichen Bericht: Die Leute aktualisieren nicht besonders regelmäßig.

Für jQuery-Nutzer kommt erschwerend hinzu, dass nur Versionen ab 3.0.0 frei von bekannten Schwachstellen sind. Für viele aktuelle Nutzer bedeutet das, dass eine Aktualisierung nicht einfach durch ein Minor-Update erledigt ist – sie kann potenziell inkompatible Änderungen mit sich bringen. Rund 79 % der erkannten jQuery-Bibliotheken verwendeten eine Version aus der 1.x-Reihe. Obwohl die finale Version von jQuery 3.0.0 bereits vor fast einem Jahr veröffentlicht wurde, nutzten nur 3,6 % der Websites eine Version aus der 3.x-Reihe.


Nächste Woche befassen wir uns in einem Beitrag ausführlicher mit jQuery, denn seine beispiellose Beliebtheit macht es besonders interessant.
jQuery UI
Bei der Beliebtheit lag jQuery UI an zweiter Stelle: Die Bibliothek wurde auf 19,3 % der getesteten URLs gefunden. Und wieder verwenden die meisten jQuery-UI-Nutzer eine anfällige Version, obwohl Updates verfügbar sind. Etwa 91 % der gefundenen jQuery-UI-Bibliotheken weisen mindestens eine Schwachstelle auf.

Auch hier liegt das größtenteils daran, dass die Nutzer nicht aktualisieren: 21,8 % der Websites mit jQuery UI verwenden eine Version, die älter als fünf Jahre ist.
Handlebars
Handlebars wurde auf 3,4 % der getesteten URLs erkannt. Davon verwendeten 68 % eine anfällige Handlebars-Version. Auch hier ist die langsame Einführung neuer Versionen der Hauptgrund. Auf den ersten Blick scheint Handlebars etwas aktueller eingesetzt zu werden. Zwar wurde die neueste Version der Bibliothek (4.0.6) nicht erkannt, doch die unmittelbar vorherige Version (4.0.5) ist auch die am häufigsten in der Produktion gefundene und macht 26,7 % der Handlebars-Nutzung aus.

Da jedoch nur selten neue Versionen veröffentlicht werden (seit November 2015 gab es lediglich zwei Minor-Versionen), verwenden diese Websites immer noch eine Bibliotheksversion, die fast zwei Jahre alt ist. Insgesamt waren 40 % der erkannten Handlebars-Versionen älter als drei Jahre.
React, Mustache, Angular, YUI und Dojo
React (1,7 %), Mustache (1,6 %), Angular (1,3 %), YUI (0,7 %) und Dojo (0,2 %) wurden zu selten erkannt, um verlässliche Rückschlüsse auf die individuelle Verwendung zu ziehen. Betrachtet man ihre Nutzung zusammen, sind anfällige Versionen jedoch weiterhin weit verbreitet: 56,3 % der im Datensatz gefundenen Versionen dieser Bibliotheken weisen mindestens eine Schwachstelle auf.
Unser hoffnungsvoller Schluss
Die aktuelle Lage ist alles andere als gut, das lässt sich nicht leugnen. Wir hatten zwar erwartet, dass die ursprüngliche Zahl zu optimistisch sein könnte, aber nicht damit gerechnet, dass 77 % der Websites mindestens eine anfällige Bibliothek verwenden.
Und um es klar zu sagen: Es gibt keine einzelne Maßnahme, die dieses Problem lösen kann. Stattdessen brauchen wir eine Kombination aus mehr Bewusstsein, besseren Tools und einer einfacheren Möglichkeit, JavaScript-Abhängigkeiten im Frontend zu verwalten (die Verbreitung von Paketmanagern ist dort längst nicht so groß wie in der Backend-Entwicklung) – um nur einige Ansatzpunkte zu nennen.
Doch wie wir bereits gesagt haben, bleiben wir zuversichtlich. Die Absicherung von JavaScript-Drittanbieterkomponenten ist ein lösbares Problem – es erfordert lediglich etwas mehr Anstrengung als ursprünglich angenommen.
Da ein Bericht wie dieser sensible Informationen enthält, werden wir die Rohdaten nicht weitergeben – das würde potenziellen Angreifern im Grunde eine Liste mit Websites und möglichen Angriffsvektoren an die Hand geben. Wenn Sie eine Website betreiben, können Sie sich jedoch gerne an uns wenden, um zu erfahren, ob Ihre Website im Bericht aufgeführt war und, falls ja, ob eine Schwachstelle entdeckt wurde. Wenn Sie npm-Pakete verwenden, können Sie mit Snyk Ihre Anwendung testen, um mögliche Sicherheitslücken aufzudecken.
Starten Sie mit Capture-the-Flag
Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Challenges lösen.