Il recente attacco alla catena di fornitura che ha compromesso i pacchetti npm di Rspack ha evidenziato una vulnerabilità significativa nel mondo dello sviluppo software. I pacchetti @rspack/core e @rspack/cli sono stati presi di mira da un attacco che ha consentito a un attore malevolo di pubblicare versioni compromesse nel registro ufficiale. Queste versioni contenevano malware destinato al mining di criptovalute, un fenomeno sempre più comune nel panorama delle minacce informatiche.
La scoperta, avvenuta grazie all'analisi di sicurezza della società Socket, ha portato all'immediata rimozione delle versioni 1.1.7 dei pacchetti colpiti, con l'aggiornamento alla versione sicura 1.1.8. L'attacco è stato possibile grazie all'accesso non autorizzato alla pubblicazione su npm, un problema che sottolinea la necessità di migliorare le misure di sicurezza nei processi di pubblicazione dei pacchetti.
Rspack, considerato un'alternativa ad alte prestazioni a webpack, è utilizzato da aziende come Alibaba, Amazon, Discord e Microsoft, il che spiega l'elevato numero di download settimanali delle librerie compromesse. L'analisi del codice malevolo ha rivelato che esso era progettato per comunicare con un server remoto, trasmettendo informazioni sensibili come credenziali di servizio cloud e dettagli di posizione IP, limitando però l'infezione a specifici paesi.
L'obiettivo finale era scaricare ed eseguire un miner di criptovalute XMRig sui sistemi Linux compromessi, sfruttando uno script postinstall nel file "package.json". Questo meccanismo garantiva l'esecuzione del payload malevolo senza necessità di azioni da parte dell'utente, rendendo l'attacco particolarmente insidioso.
In risposta all'attacco, i manutentori del progetto hanno pubblicato nuove versioni dei pacchetti senza codice malevolo, invalidato i token npm e GitHub esistenti, e avviato una verifica completa del codice sorgente per eventuali vulnerabilità. L'indagine sulla causa principale del furto di token è tuttora in corso.
Questo incidente evidenzia l'importanza di adottare misure di sicurezza più rigorose per i gestori di pacchetti, come l'implementazione di controlli di attestazione per prevenire aggiornamenti a versioni non verificate. Tuttavia, come dimostrato dall'attacco alla catena di fornitura Ultralytics nell'ecosistema Python, anche con questi controlli, gli attaccanti potrebbero ancora pubblicare versioni compromesse attraverso il poisoning di cache di GitHub Actions.