Github: NPM-Pakete konnten beliebig überschrieben werden

Der Code-Hoster Github berichtet als Betreiber der NPM-Registry von einer schwerwiegenden Sicherheitslücke, die dem Unternehmen vor wenigen Wochen gemeldet worden ist. Laut Angaben des Betreibers war es darüber möglich, andere Pakete in der Registry zu überschreiben. Damit hätte Malware an Millionen Nutzer verteilt werden können. Die Lücke wurde Github zufolge inzwischen geschlossen.
Wie es in dem kurzen Bericht im Github-Blog(öffnet im neuen Fenster) heißt, sei die Ursache der Lücke auf eine inkosistente Überprüfung der Autorisierung zurückzuführen sowie auch auf die Validierung dieser Daten über verschiedene Microservices in der NPM-Registry hinweg. Die Autorisierung sei demnach zwar korrekt für Pakete über URL-Pfade durchgeführt worden, die Updates eines NPM-Pakets seien jedoch nur über die Inhalte in der Paket-Datei selbst verteilt worden.
Angreifer hätten so theoretisch Updates für bestehende Pakete anderer Nutzer und darin Schadcode verteilen können. Diese Sicherheitslücke habe laut Github in der NPM-Registry über den Zeitraum hinaus bestanden, für den der Anbieter Telemetrie-Daten habe. Dies sei seit September 2020 der Fall. Ob die Lücke vorher ausgenutzt worden sei, könne Github entsprechend nicht sagen, der Anbieter schließe aber aus, dass die Sicherheitslücke seitdem ausgenutzt worden sei.
2FA für NPM
Die Übernahme von NPM-Accounts oder Paketen gehört zu den wohl schwerwiegendsten Angriffen auf das Javascript-Ökosystem, da so leicht Malware verteilt werden kann. Das ist in der Vergangenheit auch geschehen. Github will deshalb im kommenden Jahr damit beginnen, eine Zwei-Faktor-Authentisierung (2FA) für Maintainer und Admins von NPM-Paketen umzusetzen.
Begonnen werden soll damit für ein Gruppe der meistgenutzten Pakete und das Team bei Github sucht noch nach nutzerfreundlichen Wegen zur Umsetzung des Plans. Dazu könnte etwa Webauthn gehören. Die Nutzung der Technik mag dabei zwar Vorteile bringen. Im Fall der beschriebenen Sicherheitslücke in den Diensten der NPM-Registry selbst hätte wohl aber auch eine 2FA nicht geholfen.



