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
Gestione del system path nei workflow di GitHub
Effettuare chiamate API tramite GitHub App
Agentic Workflows in GitHub
Microsoft Fabric: la piattaforma unificata per l'ecosistema dati moderno
Integrare LLM alle nostre applicazioni in .NET con MCP
Bloccare il traffico di rete in uscita dal runner di GitHub
Raggruppamento degli aggiornamenti di dipendenze tra directory in un monorepo con Dependabot
Eseguire i pre-commit hook di git con dependabot
How to be a DevOps engineer in the AI era
Creare un extension method per applicare condizionalmente una Where in una query LINQ per Entity Framework
Utilizzare il Null conditional assignment di C# 14
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Accedere a risorse e immagini in Windows Store app di Windows 8
- Utilizzare un DataContext specifico per la modalità design time di Blend e Visual Studio nei controlli Silverlight
- Consumare dati binari in realtime lato client con ASP.NET Core SignalR
- Le DirectInk API nella Universal Windows Platform
- Gli oggetti CallOut di Expression Blend 4.0
- Esaminare documenti con namespace con LINQ e XDocument
- Personalizare l'icona e le funzionalità di un sito web per iOS e IE


