L'attacco ai pacchetti di accompagnamento nel repository NPM ha raggiunto un nuovo livello. Oltre all'uso di malware per intercettare pagamenti e informazioni riservate, gli attaccanti hanno iniziato a inserire un worm nei pacchetti compromessi per automatizzare l'inserimento di malware nelle dipendenze. L'uso del worm è stato registrato dopo la compromissione del pacchetto NPM @ctrl/tinycolor, che ha 2,2 milioni di download settimanali ed è stato utilizzato come dipendenza diretta in 964 pacchetti. A causa dell'attività del worm, l'attacco ha colpito 187 pacchetti per i quali sono state create versioni malevole (477 versioni malevole).
In seguito a un nuovo attacco che ha ottenuto le credenziali dell'account dell'accompagnatore tramite phishing, gli attaccanti pubblicano una versione di un pacchetto con un worm che si attiva quando installato come dipendenza del pacchetto compromesso. Dopo l'attivazione, il worm cerca le credenziali nell'ambiente corrente, caricando e avviando l'utilità TruffleHog. Se viene trovata una connessione al catalogo NPM, il worm pubblica automaticamente una nuova versione malevola e contagia a catena l'albero delle dipendenze. Oltre al token di accesso a NPM, il worm salva le chiavi di accesso a GitHub e ai cloud provider AWS, Azure e GCP (Google Cloud Platform), oltre ad altre informazioni riservate che può scoprire il scanner TruffleHog.
Le versioni malevole vengono create per i 20 pacchetti più popolari che possono essere accessibili tramite il token NPM trovato. La funzionalità di pubblicazione della versione è implementata come funzione NpmModule.updatePackage, che carica l'archivio sorgente del pacchetto, modifica il numero di versione e aggiunge un hook postinstall nel file package.json, inserisce un gestore in bundle.js, riimpacchetta il pacchetto e lo pubblica. È supportato il funzionamento su Linux e macOS.
Il verme è stato assegnato il nome in codice Shai-Hulud (un verme gigante menzionato nel romanzo Dune). Le credenziali trovate nel sistema vengono pubblicate su GitHub creando repository con il nome Shai-Hulud (ad esempio, "B611/Shai-Hulud"), e sono anche codificate nei log di GitHub Actions. Nel repository creato viene inserito un file data.json, contenente una stringa con informazioni sul sistema, variabili d'ambiente e chiavi di accesso intercettate, codificate con il metodo base64. Nella CI basata su GitHub, per trasferire informazioni su un host esterno, il verme crea un gestore di GitHub Actions (.github/workflows/shai-hulud-workflow.yml). A quanto pare, l'attacco non si limita ai 187 pacchetti menzionati, poiché su GitHub continuano a comparire nuovi repository con il nome Shai-Hulud e il file data.json.

Tra l'altro, a causa dell'attività del worm, 25 pacchetti dell'azienda CrowdStrike, che sviluppa strumenti per la protezione dagli attacchi tramite dipendenze (Supply Chain). Secondo CrowdStrike, i pacchetti compromessi non erano utilizzati nella piattaforma Falcon e l'attacco non si è esteso ai clienti. È stato anche riferito che la precedente ondata di pubblicazione di versioni malevole in NPM, avvenuta senza l'uso del worm, ha colpito il progetto gemini-cli, sviluppato da Google.
Fonte: opennet.ru
