La popolare GitHub Action tj-actions/changed-files è stata compromessa da un payload dannoso che sembra tentare di esportare i segreti del repository, con il potenziale di impattare migliaia di pipeline CI su GitHub. A partire dal 14 marzo 2025, tutte le versioni di questa action si ritiene siano compromesse. Non è il primo problema di sicurezza associato a questa action—una vulnerabilità precedente (CVE-2023-51664) era già stata segnalata.
L’action è ampiamente utilizzata nei flussi di lavoro CI/CD per rilevare quali file sono stati modificati tra i commit, rendendola un obiettivo di alto valore per gli attaccanti interessati a estrarre informazioni sensibili dai repository.
| Data | 2025-03-16 01:30:55 |
| Informazioni | Active Exploitation |
Riassunto tecnico
La compromissione coinvolge un payload dannoso iniettato nel codice dell’action al commit 0e58ed8. Quando l’action compromessa viene eseguita in un workflow, essa tenta di esfiltrare i segreti scrivendoli su stdout, il che è particolarmente pericoloso nei repository con log dei CI runner pubblici.
L’attacco sfrutta l’ampia fiducia riposta in questa action e le estese autorizzazioni tipicamente concesse ai workflow di GitHub Actions. Poiché nella maggior parte delle implementazioni l’action è referenziata tramite tag anziché tramite commit SHA, gli utenti sono automaticamente esposti alla versione compromessa non appena il tag viene aggiornato, senza dover modificare i file del workflow.
Il payload prende specificamente di mira le variabili d’ambiente CI e i segreti, che spesso contengono token di autenticazione sensibili, chiavi API e altre credenziali che potrebbero garantire a un attaccante l’accesso a vari sistemi e servizi.
Raccomandazioni
Azioni immediate:
Identificare i repository compromessi tramite:
- Ricerca nel vostro codice della presenza di riferimenti a
tj-actions - Utilizzo della query di ricerca GitHub:
https://github.com/search?q=org%3A<YOURORG>+uses%3A+tj-actions%2F&type=code
Rimuovere immediatamente l’action compromessa da:
- Tutti i branch (non solo da quello principale)
- Tutti i file di workflow (
.github/workflows/*.yml)
Implementare misure preventive:
- Configurare le impostazioni dell’organizzazione GitHub per permettere solo action sicure (allow-list)
- Rimuovere
tj-actions/changed-filesdalla lista delle action permesse - Eseguire il pin delle restanti GitHub Actions a commit SHA specifici invece di tag di versione
Utilizzare alternative:
- Passare a un’alternativa più sicura di GitHub Action
- Considerare la possibilità di implementare logica inline per il rilevamento delle modifiche ai file
- Per gli utenti della Semgrep AppSec Platform, attivare immediatamente la modalità di blocco per la regola di rilevamento
Ricordate che rimuovere l’action solo dal branch principale non è sufficiente—va eliminata completamente da tutti i workflow per evitare la sua esecuzione in qualunque contesto.