GitHub Actions Riemergono con il Malware Mini Shai-Hulud
La scorsa settimana gli attaccanti hanno fatto brevemente resuscitare una minaccia alla catena di fornitura quando due GitHub Actions di terze parti, precedentemente sequestrate in una campagna malware di maggio, sono state riabilitate con lo stesso codice malevolo ancora collegato ai loro tag di rilascio. Le actions, actions-cool/issues-helper e actions-cool/maintain-one-comment, sono diventate di nuovo accessibili il 16 settembre e sono rimaste attive fino al 25 settembre, consentendo a qualsiasi workflow che le richiamasse tramite un tag di versione di scaricare ed eseguire silenziosamente il vecchio payload.
Questo incidente, scoperto dai ricercatori dell'azienda di sicurezza applicativa Socket, risale all'attacco alla catena di fornitura Mini Shai-Hulud che a maggio ha infettato 323 pacchetti e 639 versioni di pacchetti nell'indice Node Package Manager (npm). Quella campagna aveva come obiettivo token di sviluppatore, credenziali e segreti di integrazione continua e distribuzione continua (CI/CD). Il team di sicurezza di GitHub aveva rimosso entrambe le actions dopo il compromesso iniziale del 18 maggio, ritenendo la minaccia neutralizzata. Tuttavia, in seguito il manutentore ha riabilitato i repository senza prima pulire i tag, che puntavano ancora a un commit contenente un payload offuscato all'interno del file index.js.
La cronologia di Socket mostra che l'esposizione è iniziata tra le 11:09 e le 18:16 GMT+2 del 16 settembre. Per nove giorni, qualsiasi progetto a valle che utilizzasse le actions tramite un tag di versione mutabile, anziché un commit hash bloccato, avrebbe scaricato il codice contaminato alla successiva esecuzione. Le actions sono comunemente impiegate per la gestione automatica delle issue, il che significa che in molti repository vengono eseguite quasi ogni giorno. Il grafico delle dipendenze di GitHub stesso elenca circa 15.000 repository che dipendono da issues-helper soltanto, sebbene il numero effettivo di quelli che hanno scaricato la versione malevola sia sconosciuto perché i ricercatori non sono riusciti a determinare quanti progetti facciano riferimento alle actions tramite tag piuttosto che a un commit bloccato.
Il payload in questione è lo stesso script offuscato di maggio, progettato per rubare segreti dalla pipeline CI/CD. Nello sviluppo software moderno, una pipeline CI/CD costruisce, testa e distribuisce automaticamente il codice, spesso con accesso a credenziali sensibili come chiavi API e password di database. Quando un'action malevola viene eseguita all'interno di quella pipeline, può silenziosamente drenare quei segreti verso un server controllato dall'attaccante. La riabilitazione, anche senza un nuovo codice d'attacco, ha effettivamente riaperto la backdoor per qualsiasi workflow che non fosse stato aggiornato o rivisto dalla pulizia iniziale.
Il 25 settembre entrambe le actions sono state nuovamente disabilitate su GitHub, causando il fallimento completo dei workflow che ancora le richiamano anziché l'esecuzione del malware. Sebbene un build fallito sia dirompente, è più sicuro dell'esfiltrazione silenziosa di credenziali. L'avviso di Socket esorta gli sviluppatori a verificare tutti i riferimenti a entrambe le actions, rimuoverli o fissare un commit verificato come pulito, rivedere le esecuzioni dei workflow avvenute tra il 16 e il 25 settembre e ruotare immediatamente tutti i segreti a cui quei workflow potevano accedere. Per i proprietari di siti web che si affidano a queste integrazioni automatizzate, un ambiente di hosting gestito come AEU Hosting offre scansione malware continua e rafforzamento della sicurezza, contribuendo a limitare il raggio di impatto quando le dipendenze esterne vengono compromesse.
L'attacco Mini Shai-Hulud illustra come i rischi della catena di fornitura possano riemergere molto tempo dopo il contenimento iniziale se i manutentori non sanitizzano a fondo i repository. L'ecosistema npm, ampiamente utilizzato dagli sviluppatori JavaScript, è un bersaglio frequente perché un singolo pacchetto infetto può propagarsi a migliaia di progetti. Questo caso ricorda che disabilitare un'action non è sufficiente; i tag e i commit stessi devono essere ripuliti dal contenuto malevolo. Si consiglia inoltre ai difensori di adottare la pratica di fissare le actions di terze parti a un commit hash specifico e verificato piuttosto che a un tag mobile, una misura che avrebbe impedito il ridispiegamento automatico del malware.