In NPM, dem Package-Registry für JavaScript, wurden zwei Schwachstellen entdeckt. Das hat GitHub am Dienstag in einem Blogpost verkündet. Bereits bei der Übernahme NPMs durch GitHub im März 2020 verkündete der damalige CEO Nat Friedman, man wolle sich verstärkt der Sicherheit des NPM-Ökosystems widmen.
Gravierende Schwachstelle mit unklaren Auswirkungen
Eines der Sicherheitsprobleme wurde im Rahmen von GitHubs Bug-Bounty-Programm entdeckt. Potenziell könnte es gravierende Auswirkungen haben. Die Schwachstelle ermöglichte es potenziellen Angreifer:innen, neue Versionen eines beliebigen Packages von einem beliebigen Konto ohne entsprechende Berechtigungen zu veröffentlichen. Die Schwachstelle wurde laut des Blogposts sechs Stunden nach Eingang der Meldung gepatcht. Im Zeitraum von September 2020 bis heute konnte GitHub keine Anzeichen, dass die Schwachstelle ausgenutzt wurde, feststellen. Für die Zeit davor verfügt GitHub leider über keine Telemetrie-Daten. Es besteht demnach also offenbar durchaus die Möglichkeit, dass die Sicherheitslücke vor September 2020 ausgenutzt wurde; NPM-Pakete also mit Schadcode versehen und neu veröffentlicht wurden. Eine Lösung für diesen zumindest denkbaren Fall bietet der GitHub-Blog nicht an.
Zurückzuführen sei die Schwachstelle auf inkonsistente Autorisierungsprüfungen sowie inkonsistente Datenvalidierungen über mehrere Microservices hinweg, die Anfragen an das NPM-Registry bearbeiteten. Offenbar gab es dabei eine Abweichung, die dazu führte, dass eine Veröffentlichungsanfrage für eine neue Version eines NPM-Pakets autorisiert werden würde, aber potenziell für ein anderes nicht autorisiertes Paket ausgeführt wurde. Gepatcht wurde die Schwachstelle, indem sichergestellt wurde, dass Autorisierung und Veröffentlichung jeweils für dasselbe Paket durchgeführt werden.
Zweite Schwachstelle mittlerweile behoben
Die zweite Schwachstelle wurde offenbar von GitHub selbst bei routinemäßigen Wartungsarbeiten an dem öffentlichen NPM-Replikat replicate.npmjs.com – einem der öffentlichen NPM-Packages des Unternehmens – verursacht. Dabei wurden offenbar Datensätze erstellt und im Changelog veröffentlicht, die die Namen privater NPM-Pakete preisgaben. Weitere Informationen über die Pakete waren offenbar nicht zugänglich. Betroffen waren laut Blogpost Namen privater Pakete im Format @owner/package, die vor dem 20. Oktober 2021 erstellt wurden. Einsehbar waren sie zwischen dem 21. Oktober und dem 29. Oktober. Mittlerweile will GitHub sichergestellt haben, dass in Zusammenhang mit der Replikationsdatenbank keine Datensätze mit Namen privater Pakete erzeugt werden.
2FA und weitere Maßnahmen geplant
Für 2022 verkündet der Blogpost die schrittweise Einführung verpflichtender Zwei-Faktor-Authentifizierung für Maintainer:innen populärer NPM-Pakete. Auch habe GitHub in den vergangenen Monaten verstärkt in die Automatisierung von Monitoring und Analyse neu veröffentlichter NPM-Pakete investiert.