Cybersicurezza

Come il codice malevolo entra nel software fidato tramite la catena di fornitura

Susan Hill

Un attacco alla catena di fornitura non sfonda il software che usi. Avvelena uno dei pezzi con cui quel software è costruito e poi aspetta che il normale processo di aggiornamento lo porti sul tuo dispositivo. L’app si installa senza intoppi, la firma resta valida e l’aggiornamento arriva dal canale ufficiale. Il codice malevolo viaggia insieme a esso. È questa inversione a rendere la tecnica così efficace: trasforma la fiducia che fa funzionare il software nel punto che viene sfruttato.

Quasi nulla di ciò che esegui oggi è scritto per intero dall’azienda il cui nome compare sullo schermo. Una sola app può trascinarsi dietro centinaia o migliaia di pacchetti open source, ognuno mantenuto da sconosciuti e ognuno con altri pacchetti al seguito. Gli sviluppatori leggono di rado quel codice; si fidano del registro da cui proviene e del numero di versione che lo accompagna. Chi si infila in un qualsiasi anello di quella catena raggiunge in un colpo solo tutti quelli a valle, ed è per questo che un singolo pezzo avvelenato può colpire decine di migliaia di progetti prima che qualcuno se ne accorga.

I punti d’ingresso si raggruppano in pochi schemi. Il typosquatting piazza un pacchetto malevolo con un nome a un tasto di distanza da quello popolare e aspetta l’errore di battitura. La confusione delle dipendenze sfrutta il modo in cui gli strumenti risolvono i nomi e li inganna facendo prendere un pacchetto pubblico al posto di quello privato dell’azienda. Il furto d’account si impadronisce delle credenziali di un vero manutentore e distribuisce il malware come un normale aggiornamento; all’inizio del 2026 il diffusissimo pacchetto axios ha pubblicato per un breve periodo una versione compromessa dopo che la macchina del suo manutentore principale era stata violata con l’ingegneria sociale. E l’avvelenamento della catena di montaggio prende di mira i sistemi automatici che assemblano e pubblicano il software, dove un solo passaggio corrotto raggiunge ogni progetto che ne dipende.

La catena di montaggio è diventata il bersaglio più ambito proprio perché sta a monte di tutto il resto. Quando il popolare componente di GitHub Actions tj-actions/changed-files è stato compromesso nel 2025, gli aggressori ne hanno riscritto le etichette di versione perché puntassero a codice malevolo ed hanno estratto segreti dai log di compilazione di oltre ventimila repository: chiavi d’accesso, token e chiavi private, tutto in chiaro. Una campagna successiva, che i ricercatori hanno chiamato Megalodon, ha trasformato GitHub Actions in una backdoor capace di propagarsi da sola, arrivando a 5.561 repository in circa sei ore. La macchina che costruisce il tuo software può essere sovvertita con la stessa facilità del software stesso.

Anche gli strumenti che gli sviluppatori usano ogni giorno sono nella zona d’impatto. GlassWorm, individuato per la prima volta alla fine del 2025, si è diffuso tramite estensioni per Visual Studio Code nei marketplace di OpenVSX e Microsoft. Nascondeva il suo carico con caratteri Unicode invisibili, così le righe malevole risultavano letteralmente illeggibili nell’editor e sfuggivano alla revisione umana. Una volta installato, rubava le credenziali di npm, GitHub e Git e le usava per infettare automaticamente altri pacchetti ed estensioni, il tratto che definisce un worm. Poiché gli editor aggiornano le estensioni in silenzio in background, le vittime ricevevano le versioni avvelenate senza cliccare nulla. Un’altra estensione avvelenata di VS Code è servita a rubare circa 3.800 repository interni dello stesso GitHub.

Ciò che rende questi attacchi così difficili da cogliere è che ogni singolo passaggio sembra legittimo. Il pacchetto è firmato. L’aggiornamento viene dal registro reale. L’account del manutentore è autentico. Le difese tradizionali cercano file già noti come dannosi e malware evidente, ma gli attacchi alla catena di fornitura si nascondono dentro codice fidato, atteso e spesso invisibile, che arriva esattamente quando e come il software dovrebbe arrivare. Peggio ancora: il consiglio di sicurezza di sempre, aggiornare subito, è proprio il meccanismo su cui conta l’aggressore. Per la prima volta, installare l’ultima versione non è, senza distinzioni, la scelta sicura.

Chi difende ha trovato un accordo su una manciata di pratiche che funzionano. I file di blocco fissano ogni dipendenza a una versione esatta e verificata, così l’installer scarica solo ciò che è stato revisionato e non semplicemente la più recente. Disattivare gli script di installazione automatici taglia la via più comune con cui un pacchetto malevolo esegue codice appena arriva. Ancorare le GitHub Actions a un hash di commit preciso, invece che a un’etichetta mobile, rende inutile il trucco di riscrivere le etichette. Una distinta dei materiali del software, l’elenco dettagliato di ogni componente dentro una build, consente a un team di sapere in pochi minuti se è esposto quando viene rivelato l’incidente successivo. Molte delle organizzazioni che sono sfuggite agli attacchi recenti non hanno fatto nulla di esotico: compilavano da un file di blocco già confermato e lavoravano dietro un proxy di registro che metteva in quarantena i pacchetti appena pubblicati.

Per chi non scrive codice la protezione è soprattutto indiretta, ma la lezione no. La catena di fornitura del software è ormai un campo di battaglia di primo piano, e sono le aziende che costruiscono le app sul tuo telefono e sul tuo portatile a doverla mettere in sicurezza. La risposta ragionevole non è il panico né il vecchio riflesso di aggiornare tutto appena compare una notifica. È preferire il software di squadre che dichiarano cosa rilasciano e come lo costruiscono, e trattare l’idea di fonte affidabile come qualcosa da guadagnarsi a ogni anello, non come una proprietà che scende da sola lungo la catena.

La risposta del settore sta prendendo forma intorno alla provenienza: una prova crittografica di dove sia nato un pezzo di codice e di come sia stato costruito, verificata in automatico prima di installare qualsiasi cosa. È la stessa idea che una generazione fa ha messo in sicurezza il traffico web, applicata ora alla catena di montaggio del software stesso. Finché quella prova non sarà universale, ogni installazione resta un atto di fiducia verso persone che non conoscerai mai.

Discussione

Ci sono 0 commenti.