Sommario
Nel marzo 2025 viene scoperto un attacco alla supply chain di proporzioni significative che colpisce la piattaforma GitHub Actions, compromettendo repository fondamentali utilizzati da decine di migliaia di progetti open source. L’attacco, sofisticato e a più livelli, ha avuto origine dalla compromissione di SpotBugs, per poi estendersi a reviewdog, tj-actions e infine tentare l’infiltrazione del framework agentkit di Coinbase. L’analisi condotta da Palo Alto Networks – Unit 42 ha ricostruito l’intero flusso dell’attacco e rivelato l’estensione e le implicazioni della campagna.
Fase iniziale: SpotBugs come punto d’ingresso e la fuga del PAT di un maintainer
Il primo passo dell’attacco risale a novembre 2024, ma è stato scoperto solo a marzo 2025. Gli attori malevoli inseriscono un workflow dannoso nel repository spotbugs/spotbugs, sfruttando la branch hewrkbwkyk. Questo script malevolo cattura tutti i secrets disponibili durante l’esecuzione, inclusi token di accesso personali (PAT), li cripta con AES e ne invia una copia criptata usando una chiave RSA preimpostata, caricando il tutto come artifact nel workflow.

Tra i secrets trafugati vi è il PAT di RD_MNTNR, un maintainer attivo su SpotBugs e contemporaneamente sulla reviewdog organization. Questo token compromesso consente l’accesso e la modifica del repository reviewdog/action-setup, che diventa quindi il secondo punto di compromissione nella catena.
Compromissione di reviewdog: tag GitHub per offuscare il payload
Utilizzando il PAT di RD_MNTNR, l’attaccante sovrascrive il tag “v1” di reviewdog/action-setup, puntandolo a un commit malevolo precedentemente caricato tramite un fork e poi “pulito” con la cancellazione dell’account usato. I commit vengono introdotti tramite una tecnica avanzata che sfrutta i fork GitHub e la mancata registrazione delle modifiche ai tag nei log di audit per utenti free, rendendo l’attacco estremamente difficile da tracciare.

Il commit malevolo, completamente mascherato da operazione legittima, raccoglie informazioni sensibili dal runner CI/CD ogni volta che il workflow viene eseguito, esponendo variabili d’ambiente e segreti ai log pubblici.
Attacco a tj-actions: compromissione automatizzata tramite dipendenza transitiva
Dalla compromissione di reviewdog/action-setup, il payload si propaga al repository tj-actions/eslint-changed-files, che a sua volta viene utilizzato da tj-actions/changed-files. Quest’ultimo è una action molto popolare, utilizzata in oltre 23.000 repository GitHub.

La compromissione avviene tramite un commit malevolo (0e58ed8) mascherato da pull request generata dal legittimo bot renovate[bot], che viene automaticamente approvata e integrata. Successivamente, vengono aggiornati i tag git in modo da puntare tutti allo stesso commit dannoso, eseguibile da qualsiasi flusso CI che lo richiami.
Il commit in questione stampa tutti i segreti del runner CI/CD nel log pubblico, esponendo informazioni critiche senza necessità di esecuzioni remote o exploit diretti, ma sfruttando il meccanismo di fiducia tra GitHub Actions e repository.
Coinbase nel mirino: attacco mirato contro il framework agentkit
Gli attaccanti si concentrano anche sul repository coinbase/agentkit, un progetto open source che consente ad agenti AI di eseguire operazioni onchain. Utilizzando due account fittizi (2ft2dKo28UazTZ e mmvojwip), creano fork del repository e modificano i workflow per testare l’integrazione di versioni malevole dell’action tj-actions/changed-files, in particolare il tag v39.
Il commit 6e6023c0 include un payload esplicitamente indirizzato a Coinbase, progettato per eseguire esfiltrazione di credenziali in un workflow CI/CD configurato con permessi “write-all”, quindi potenzialmente critico.
Il 14 marzo 2025, l’attacco viene rilevato e Coinbase riceve una segnalazione di sicurezza. Il maintainer interviene eliminando il file changelog.yml, disinnescando così la minaccia prima che potesse causare danni. Secondo la comunicazione con Unit 42, Coinbase ha risposto rapidamente e non ha subito compromissioni.
Fork, commit impersonation e GitHub tags: tecniche avanzate di offuscamento
L’intera operazione sfrutta in modo creativo le seguenti vulnerabilità strutturali e funzionalità legittime di GitHub:
- Commit impersonation: i commit malevoli vengono attribuiti a utenti legittimi o bot.
- Fork network: i commit vengono introdotti tramite fork che, una volta cancellati, lasciano riferimenti “dangled” ma non tracciabili.
- Sovrascrittura dei tag: gli attori aggiornano i tag per puntare a commit dannosi senza generare log di audit.
- Pulizia dell’account: i profili GitHub utilizzati vengono rimossi o alterati in modo da attivare il flagging automatico di GitHub, cancellando le tracce.
Analisi dell’impatto: migliaia di repository a rischio

Utilizzando un grafo delle dipendenze costruito a partire da reviewdog/action-setup, è stato possibile stimare l’estensione dell’attacco in tre livelli di profondità:
- Livello 1: azioni direttamente dipendenti da reviewdog/action-setup
- Livello 2: azioni che dipendono da quelle del primo livello
- Livello 3: repository e workflow che utilizzano quelle azioni
L’attacco ha compromesso potenzialmente migliaia di progetti, molti dei quali ancora ignari della vulnerabilità. Le cifre esatte sono sottostimate, poiché non includono repository privati o azioni senza dipendenze pubbliche.
Azioni di mitigazione consigliate da Unit 42
Per gli utenti che hanno utilizzato tj-actions/changed-files, eslint-changed-files o qualsiasi azione reviewdog, Unit 42 consiglia:
- Verificare i workflow esistenti, identificando versioni o tag compromessi
- Controllare i log per segreti esposti
- Ruotare tutti i secrets potenzialmente coinvolti
- Aggiornare i riferimenti alle action con versioni sicure o checksum fissi
- Monitorare per attività sospette e comportamento anomalo nei CI/CD
Un monito per la sicurezza della supply chain
L’attacco documentato rappresenta uno degli esempi più sofisticati di compromissione della supply chain basata su GitHub Actions, evidenziando come i meccanismi di fiducia tra progetti open source possano essere sfruttati. La capacità degli attaccanti di muoversi lateralmente, di rimanere invisibili attraverso fork e tag non tracciabili e di colpire target specifici come Coinbase, dimostra che anche minime negligenze nella gestione dei token e delle dipendenze possono causare impatti globali.
Il caso dovrebbe servire da allarme per l’intera community open source e da stimolo per GitHub affinché riveda i propri sistemi di auditing, gestione dei tag e rilevamento anomalie.