Registrato un secondo attacco ai pacchetti nel repository NPM, condotto utilizzando una modifica del verme auto-replicante Shai-Hulud, che inserisce malware nelle dipendenze. A causa dell'attacco, sono stati pubblicati rilasci dannosi di 605 pacchetti, con oltre 100 milioni di download in totale.
Per condurre l'attacco, i criminali informatici hanno intercettato tramite phishing le credenziali di accesso del manutentore di uno dei pacchetti più popolari utilizzati come dipendenza da un gran numero di pacchetti. Sfruttando l'account compromesso, gli aggressori hanno pubblicato un rilascio del pacchetto, nel quale è stato inserito codice per attivare il verme all'installazione del pacchetto colpito come dipendenza. Il verme attivato cerca credenziali nell'ambiente corrente, scaricando e avviando l'utilità TruffleHog.
Se viene rilevato un token di accesso al catalogo NPM, il worm pubblica automaticamente nuove versioni dannose per i pacchetti sviluppati nell'ambiente corrente. In questo modo, viene compromesso l'intero albero delle dipendenze. Oltre al token NPM, il worm mantiene le chiavi di accesso a GitHub e ai servizi cloud AWS, Azure e GCP (Google Cloud Platform), così come le variabili di ambiente e altri dati sensibili che è in grado di rilevare lo scanner TruffleHog.
I dati sensibili trovati nel sistema vengono pubblicati su GitHub tramite la creazione di repository con nomi casuali (ad esempio, «qzx15djl71alh6p80h») e la frase «Sha1-Hulud: The Second Coming» nella descrizione, oltre a essere visualizzati in formato codificato nei log di GitHub Actions. Nel repository creato sarà presente un file in formato JSON (ad esempio, jsonactionsSecrets.json o contents.json), contenente una stringa con informazioni sulla sistemazione codificate in metodo base64, variabili di ambiente e dati catturati. Per trasmettere informazioni al di fuori dei sistemi di integrazione continua basati su GitHub, il worm crea un gestore GitHub Actions chiamato «.github/workflows/formatter_123456789.yml» e configura un runner con il nome SHA1HULUD.
Le differenze rispetto all'attacco simile di settembre riguardano un metodo diverso per l'inserimento di codice dannoso nel pacchetto. Nelle versioni infette generate dal worm si dichiara l'implementazione del supporto per la piattaforma JavaScript Bun. Viene aggiunta al file package.json, nella sezione "preinstall", la riga di comando "node setup_bun.js" che definisce gli script eseguiti prima dell'inizio dell'installazione.

Nel file "setup_bun.js" è presente il codice per eseguire uno script offuscato "bun_environment.js", contenente il codice del worm. Per la propria ulteriore diffusione, il worm trova il codice dei pacchetti, modifica il file package.json (incrementando il numero di versione e includendo la chiamata a setup_bun.js), aggiunge i file setup_bun.js e bun_environment.js, riporta a pacchetto e esegue il comando "npm publish" per pubblicare la nuova versione.
Tra i pacchetti popolari compromessi ci sono: @zapier/zapier-sdk (2,8 milioni di download a settimana), @posthog/core (2,8 milioni), posthog-node (1,5 milioni), @asyncapi/specs (1,4 milioni), @postman/tunnel-agent (1,2 milioni). Si presume che l'attacco sia iniziato con la compromissione del pacchetto associato @asyncapi/specs.
Fonte: opennet.ru
