E' notizia proprio di questi giorni quella riguardante diversi attacchi alla supply chain delle GitHub Action che, in particolare, ha visto colpite tj-actions/changed-files (per elencare i file cambiati in un commit) e reviewdog/actions-setup (per inizializzare il tool di code review). La tipologia di attacco è la medesima, passata inizialmente inosseravata tramite il merge di qualche PR o di versioni generate da fork dei repository originali, ha colpito ed estratto secret in diversi repository.
La domanda a questo punto sorge spontanea: come ci difendiamo?
La risposta a questa domanda non è facile, come d'altronde non è semplice il mondo che gira attorno alla security. Tuttavia, possiamo intervenire con diverse azioni. La prima azione utile, è quella di bloccare tutte le GitHub Action di cui la provenienza è incerta e non verificabile:

Tutte le GitHub Action rilasciate da GitHub stessa, oppure da partner verificati, ci consentono di avere un livello aggiuntivo di sicurezza su ciò che ci portiamo dentro i nostri repository. Se vogliamo essere ancora più stringenti, possiamo tuttavia limitare completamente il comportamento e farci tutte le Action custom.
In aggiunta, non dovremmo mai utilizzare le GitHub Action puntando ad un tag o, peggio, ad una versione non specificata:
- uses: actions/checkout@v4
with:
ref: 'main'Questo perchè le Action usano comunque semantic versioning (quindi X.Y.Z), pertanto indicare la v4 in termini generici come in questo caso, significa che potrà essere usata l'ultima versione rilasciata della major 4. Ad ogni run del workflow, quindi, potrebbe essere utilizzata una action differente (4.0.0, 4.0.1, 4.1.2 etc.), che potrebbe produrre risultati, o portare implicazioni di sicurezza, differenti. Questa la versione corretta:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
ref: 'main'In questo caso abbiamo puntato allo SHA del commit che corrisponde ad una versione specifica (in questo caso la 4.2.2). Poiché gli SHA dei commit sono immutabili, questo assicura che venga sempre presa la stessa versione ad ogni run.
E' sicuramente un modello differente di lavorare, in cui prestiamo maggiore attenzione alla sicurezza a fronte di un leggero effort: in questo caso la complessità sta nel trovare lo SHA relativo alla versione corretta e fare l'analisi con dei tool di sicurezza di ciò che è stato rilasciato in quella specifica versione della Action, in modo tale che un update possa andare sempre a buon fine. Non è nemmeno necessario preoccuparsi più di tanto, perchè alla fine anche Dependabot funziona con gli SHA e quindi le proposte arriveranno in automatico.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Recuperare gli audit log in Azure DevOps
Integrazione di Copilot in .NET Aspire
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Gestione delle issue type con GitHub
Utilizzare il Null conditional assignment di C# 14
Introduzione a GitHub Copilot CLI
Impostare automaticamente l'altezza del font tramite CSS
Rendere affidabile lo scale out su Azure App Service
Self-healing degli unit test con Copilot in GitHub
Recuperare le subissue e il loro stato di completamento in GitHub


