GitHub sta rafforzando la sicurezza di npm in seguito a diversi attacchi alla catena di fornitura. La pubblicazione dei pacchetti può ora essere confermata tramite autenticazione a due fattori (2FA) e gli sviluppatori hanno accesso a flag dedicati per la gestione di sorgenti di installazione non standard.
Gli sviluppatori hanno introdotto un nuovo sistema di pubblicazione a fasi per npm, che mira a rendere più difficile la vita agli hacker che compromettono le pipeline CI/CD e gli account degli sviluppatori. Ora, la pubblicazione di un pacchetto può essere effettuata in due fasi: prima, il file tarball completato viene inviato a una coda speciale, poi il manutentore deve approvare manualmente la release utilizzando l’autenticazione a due fattori. Solo a quel punto il pacchetto sarà disponibile su npmjs.com.
L’azienda spiega che il nuovo sistema aggiunge la “prova di presenza”, ovvero la verifica dell’effettiva presenza di una persona, anche alle pipeline automatizzate e alla pubblicazione affidabile tramite OpenID Connect (OIDC). Ciò significa che compromettere la CI/CD non è più sufficiente per un attacco: un malintenzionato dovrà anche superare la verifica a due fattori (2FA).
La funzionalità è ora generalmente disponibile, ma non tutti possono utilizzarla. Per la pubblicazione a fasi, il pacchetto deve già esistere nel registro npm, lo sviluppatore deve disporre dei diritti di pubblicazione e l’autenticazione a due fattori deve essere abilitata per l’account.
Per inviare un pacchetto, utilizza il comando `npm stage publish`, ma ciò richiede la versione 11.15.0 o successiva di `npm CLI`. GitHub consiglia di combinare la pubblicazione in fase con la pubblicazione affidabile tramite OIDC per garantire ulteriormente la sicurezza della catena di fornitura.
Allo stesso tempo, npm ha introdotto nuovi meccanismi per il controllo dell’installazione dei pacchetti. Questi includono tre flag: –allow-file, –allow-remote e –allow-directory. Funzionano secondo lo stesso principio del flag –-allow-git già esistente e consentono di autorizzare esplicitamente l’installazione delle dipendenze solo da fonti specifiche.
Quindi, –allow-file gestisce i file locali e gli archivi tarball, –allow-remote gestisce gli URL remoti e gli archivi HTTPS e –allow-directory controlla l’installazione da directory locali.
In sostanza, gli sviluppatori di GitHub stanno implementando un approccio basato su una whitelist per tutti i metodi di installazione dei pacchetti non standard. Questo dovrebbe ridurre il rischio di attacchi tramite dipendenze, archivi dannosi e fonti di terze parti compromesse.
Le nuove misure di sicurezza arrivano in un momento di forte aumento degli attacchi alle catene di approvvigionamento open source. In particolare, una delle ondate di attacchi più consistenti è associata al gruppo TeamPCP , che compromette in modo massiccio pacchetti software molto diffusi e utilizza worm autoreplicanti per mantenere il ciclo di infezione.
Carolina Vivianti è consulente/Advisor autonomo in sicurezza informatica con esperienza nel settore tech e security. Ha lavorato come Security Advisor per Ford EU/Ford Motor Company e Vodafone e ha studi presso la Sapienza Università di Roma.
Aree di competenza: Cybersecurity, IT Risk Management, Security Advisory, Threat Analysis, Data Protection, Cloud Security, Compliance & Governance