The release of the NPM 12.0 package manager has been published, which is included with Node.js and used for distributing modules in JavaScript. This new version is notable for its default disabling of script execution during package installation. This change is expected to complicate attacks through dependency compromise and slow down the spread of worms activated from install scripts.
To prohibit the auto-execution of scripts specified in package.json via the preinstall, install, or postinstall parameters, the allowScripts setting is now set to 'off' by default. Execution of such scripts, as well as compilation of C/C++ code using the node-gyp utility when a binding.gyp file is present, will now only occur with explicit user instruction. Additionally, the parameters '--allow-git' and '--allow-remote' are now set to 'none' by default, disabling automatic loading of dependencies from Git repositories and direct links to tar archive sites.
Per avviare gli script di installazione, utilizzare il comando «npm approve-scripts», a cui è possibile passare i nomi dei pacchetti fidati o l'opzione «—all» per concedere l'autorizzazione a tutti i pacchetti. Per i pacchetti sospetti, si consiglia di eseguire il comando «npm approve-scripts —allow-scripts-pending», che mostrerà un elenco degli script in attesa di avvio. Dopo aver verificato questi script, possono essere autorizzati con il comando «npm approve-scripts» e aggiunti alla lista bianca in package.json.
Inoltre, è stato annunciato il divieto di utilizzare nel repository NPM i GAT token di accesso (Granular Access Tokens) configurati per eseguire azioni senza autenticazione a due fattori (2FA). A partire da agosto, tali token non consentiranno di eseguire operazioni come la creazione o la cancellazione di token, la modifica del profilo, della password o dell'email, la configurazione dell'autenticazione a due fattori, la generazione di codici di ripristino, la modifica dei permessi e la gestione degli accompagnatori, senza una conferma manuale aggiuntiva.
A gennaio 2027 si prevede di vietare la pubblicazione diretta di pacchetti utilizzando token che aggirano il 2FA. I pacchetti potranno comunque essere pubblicati nella sezione staging, dove rimarranno fino alla conferma manuale del rilascio da parte di un responsabile. Dopo la conferma manuale, i pacchetti pubblicati diventeranno disponibili per l'installazione da parte degli utenti.
Per la pubblicazione automatica si propone di utilizzare il meccanismo «Trusted Publishers», basato sull'uso dello standard OpenID Connect (OIDC) e di token di autenticazione a tempo limitato, scambiati tra servizi esterni e il catalogo dei pacchetti per confermare l'operazione di pubblicazione del pacchetto, invece di utilizzare password tradizionali o token di accesso API permanenti.
Fonte: opennet.ru
