© saicle/Shutterstock.com
Das Entfernen eines npm-Pakets und seine Folgen

#leftpadgate


Es war ein Riesenskandal: #leftpadgate auf Twitter. Ein einziger Entwickler hat Node.js, Express und eine riesige Anzahl von Paketen in der npm Registry zerstört. Doch wie kam es dazu, war es wirklich so schlimm, und was sind die Konsequenzen aus diesem Vorfall?

Die Situation, die kurz zu Problemen in der npm Registry geführt hat, ist nicht der erste Vorfall von größerem Ausmaß. Anfang 2015 ging ein Aufschrei durch die Node. js-Community. Dieses Mal war #rimrafall der Grund. Ein Paket, das ausnutzte, dass es möglich ist, in der package.json-Datei eines npm-Pakets Shellkommandos auszuführen. Im preinstall-Skript, das noch vor der Installation des Pakets abgearbeitet wird, wurde der Befehl rm -rf /* angegeben, der auf Unix-Systemen dazu führt, dass alles innerhalb des Wurzelverzeichnisses des Systems gelöscht wird.

Das Problem

Jetzt bereitete wieder die Offenheit und Flexibilität von npm Schwierigkeiten. Jeder Entwickler hat die Möglichkeit, seine eigenen npm-Pakete in der npm Registry zu veröffentlichen; Qualitätskontrolle oder Sicherheitsüberprüfungen finden nicht statt. Genauso einfach wie Pakete publiziert werden können, können sie auch wieder entfernt werden. Bei Paketen, auf die keine anderen Pakete aufbauen, ist ein Entfernen nur für die Nutzer des Pakets ärgerlich, ansonsten hat es keine Konsequenzen. Im Fall des left-pad-Pakets war die Ausgangssituation jedoch eine andere: Das unscheinbare Paket füllt eine Zeichenkette von links auf eine bestimmte Länge mit bestimmten Zeichen auf, der eigentliche Quellcode umfasst siebzehn Zeilen. Das Paket hat in einem Monat über eine Million Downloads auf www.npmjs.com. Außerdem hängen zahlreiche Projekte von diesem Paket ab. Und plötzlich macht der Autor dieses sehr erfolgreichen Pakets vom Kommando npm unpublish Gebrauch und entfernt damit eine Abhängigkeit für andere Pakete aus der Registry.

Azer Koçulu, der Autor von left-pad, hat über 250 Pakete aus Protest über einen Rechtsstreit entfernt; Auslöser war die Aufforderung, sein kik-Paket aus der Registry zu entfernen. Nachdem er dem nicht nachkam, wurde ihm das Eigentum am Paket genommen und an die Rechteinhaber von www.kik.com übergeben, was der Package Name Dispute Resolution Policy von npm entspricht. Darüber war Azer so verärgert, dass er alle Pakete entfernte. Nachdem das npm-Team durch die vielen fehlschlagenden Anfragen aufmerksam wurde, wurde die left-pad-Funktionalität innerhalb von 10 Minuten wiederhergestellt.

Die Konsequenzen

Das Problem von npm m...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang