Die Ausgabe des Paketmanagers NPM 12.0 wurde veröffentlicht, der in der Lieferung von Node.js enthalten ist und zur Verbreitung von Modulen in JavaScript verwendet wird. Die neue Version ist bemerkenswert, da standardmäßig die Ausführung von Skripten während der Installation von Paketen eingestellt wurde. Es wird angenommen, dass diese Änderung es schwieriger macht, Angriffe durch Kompromittierung von Abhängigkeiten durchzuführen und die Verbreitung von Würmern, die durch Installationsskripte aktiviert werden, verlangsamt.
Um das automatische Starten von Skripten, die in package.json über die Parameter preinstall, install oder postinstall angegeben sind, zu unterbinden, ist die Einstellung allowScripts standardmäßig auf "off" gesetzt. Die Ausführung solcher Skripte sowie das Starten der Kompilierung von C/C++-Code mit dem Tool node-gyp, wenn im Paket eine Datei binding.gyp vorhanden ist, erfolgt jetzt nur auf ausdrückliche Anweisung des Benutzers. Darüber hinaus sind die Parameter "—allow-git" und "—allow-remote" standardmäßig jetzt auf "none" gesetzt, was das automatische Herunterladen von Abhängigkeiten aus Git-Repositories und von direkten Links zu tar-Archiv-Webseiten deaktiviert.
Um das Ausführen von Installationsskripten zu organisieren, sollte der Befehl „npm approve-scripts“ verwendet werden, dem die Namen vertrauenswürdiger Pakete als Argumente übergeben werden oder die Option „—all“, um allen Paketen die Genehmigung zu erteilen. Für zweifelhafte Pakete wird empfohlen, den Befehl „npm approve-scripts —allow-scripts-pending“ auszuführen, der eine Liste der zur Ausführung anstehenden Skripte ausgibt. Nach der Überprüfung dieser Skripte können sie mit dem Befehl „npm approve-scripts“ genehmigt und zur Whitelist in package.json hinzugefügt werden.
Darüber hinaus wurde das Verbot der Verwendung von GAT-Zugriffstoken (Granular Access Tokens), die für die Durchführung von Aktionen ohne Zwei-Faktor-Authentifizierung (2FA) konfiguriert sind, im NPM-Repository angekündigt. Ab August werden solche Token, ohne zusätzliche manuelle Bestätigung von Aktionen, keine Operationen wie das Erstellen oder Löschen von Tokens, das Ändern von Profilen, Passwörtern oder E-Mails, das Einrichten der Zwei-Faktor-Authentifizierung, das Generieren von Wiederherstellungscodes, das Ändern von Zugriffsrechten und die Verwaltung von Begleitern ermöglichen.
Im Januar 2027 wird beabsichtigt, die direkte Veröffentlichung von Paketen, die Token verwenden, die 2FA umgehen, zu verbieten. Die Pakete können jedoch im Staging-Bereich veröffentlicht werden, wo sie bis zur manuellen Freigabe durch den Begleiter verbleiben. Nach der manuellen Bestätigung werden die veröffentlichten Pakete für die Installation durch die Benutzer verfügbar.
Für die automatische Veröffentlichung wird ein Mechanismus namens „Trusted Publishers“ vorgeschlagen, der auf dem OpenID Connect (OIDC) Standard basiert und zeitlich begrenzte Authentifizierungstoken verwendet, die zwischen externen Diensten und dem Paketkatalog ausgetauscht werden, um den Veröffentlichungsprozess des Pakets zu bestätigen, anstelle von traditionellen Passwörtern oder permanenten Zugriffstokens für die API.
Quelle: opennet.ru
