Kern der Ankündigung ist ein Wechsel beim Vertrauensmodell von npm. Was bei „npm install“ bisher standardmäßig automatisch geschah, soll in npm v12 nicht mehr ohne ausdrückliche Zustimmung laufen. Das betrifft laut GitHub sowohl Codeausführung als auch Abhängigkeitsquellen außerhalb des Registrys, die derzeit während der Installation automatisch ausgelöst oder aufgelöst werden.
Konkret nennt GitHub drei Bereiche: die automatische Ausführung von Skripten zur Installation von Abhängigkeiten, die automatische Auflösung Git-basierter Abhängigkeiten und die automatische Auflösung von Abhängigkeiten über entfernte URL-Adressen. Nach dem Upgrade auf Version 12 funktionieren diese Mechanismen nur noch dann weiterhin automatisch, wenn sie zuvor ausdrücklich genehmigt wurden.
GitHub zufolge können diese neuen Voreinstellungen Supply-Chain-Angriffe deutlich eindämmen. Das Unternehmen verweist darauf, dass mehrere in jüngerer Zeit beobachtete Angriffstechniken dadurch unterbunden oder zumindest erschwert worden wären. Als Beispiele nennt GitHub Kampagnen mit bösartigen Preinstall- und Postinstall-Skripten gegen eslint-config-prettier, Toptals Picasso-Pakete und Dutzende npm-Pakete zum Datendiebstahl.
Außerdem verweist GitHub auf den Missbrauch von Git-Abhängigkeiten, wie er in den von Shai-Hulud dokumentierten Angriffen zu sehen war. Auch diese Angriffsmethode zielt auf Verhaltensweisen ab, die bislang bei „npm install“ automatisch akzeptiert wurden. Die angekündigten Änderungen setzen genau dort an, indem sie automatische Vertrauensentscheidungen durch eine explizite Freigabe ersetzen.
Für Entwickler bedeutet das allerdings auch Anpassungsbedarf. Projekte, die diese Funktionen in legitimen Arbeitsabläufen nutzen, müssen vor dem Wechsel auf npm v12 ausdrücklich dafür optieren. GitHub rät deshalb dazu, zunächst auf npm 11.16.0 oder neuer zu aktualisieren. Diese Version blendet Warnungen für alle Aktionen ein, die unter npm v12 zu Problemen führen oder nicht mehr automatisch laufen werden.
Damit können Entwickler ihre normalen Installationsabläufe durchlaufen lassen und prüfen, welche Abhängigkeiten oder Prozesse vor dem Upgrade eine ausdrückliche Freigabe benötigen. So soll sich vorab erkennen lassen, wo Anpassungen erforderlich sind, bevor npm v12 eingeführt wird.
Parallel dazu hat GitHub eine Diskussion in der Community eröffnet, damit Entwickler Rückmeldungen und Vorschläge zu den bevorstehenden Änderungen einbringen können. Die Ankündigung macht deutlich, dass npm v12 nicht nur neue Schutzmechanismen einführt, sondern auch bisher etablierte Standardabläufe neu bewertet.
