Negli ultimi giorni Microsoft Security Blog ha pubblicato un rapporto dettagliato su una campagna di “dependency confusion” che ha sfruttato 33 pacchetti npm malevoli. L’obiettivo era profilare gli ambienti di sviluppo e raccogliere informazioni sensibili, come credenziali di cloud, token di accesso e configurazioni di CI/CD.

Come funziona la confusione di dipendenze
La tecnica si basa sul fatto che i gestori di pacchetti, come npm, risolvono prima le dipendenze locali (pubblicate dall’azienda) rispetto a quelle pubbliche. Se un attaccante pubblica un pacchetto con lo stesso nome di un pacchetto interno, il sistema di build può scaricare la versione malevola anziché quella prevista, senza che l’utente ne sia consapevole.
Impatto sulle pipeline di sviluppo
- Profilazione automatica degli ambienti di sviluppo, con raccolta di informazioni su repository, configurazioni di build e credenziali.
- Possibilità di esfiltrare token di accesso a servizi cloud (AWS, Azure, GCP), sistemi di gestione segreti (Vault, 1Password) e piattaforme di CI/CD (GitHub Actions, GitLab CI).
- Rischio di esecuzione di codice malevolo durante l’installazione dei pacchetti, con potenziale compromissione del nodo di build.
Rilevazione e mitigazione
Microsoft suggerisce diversi punti di controllo:
- Isolamento delle dipendenze: utilizzare registri privati e bloccare l’accesso ai pacchetti pubblici non autorizzati.
- Verifica delle firme dei pacchetti: abilitare la verifica delle firme GPG per garantire l’autenticità.
- Monitoraggio del traffico di rete: rilevare richieste sospette verso registri npm non standard.
- Audit delle dipendenze: eseguire scansioni periodiche per individuare pacchetti non autorizzati o versioni non previste.
- Zero Trust per le pipeline: applicare il principio di “least privilege” ai nodi di build, limitando l’accesso solo ai servizi strettamente necessari.
Pratiche consigliate per le PMI e gli MSP
Per le piccole e medie imprese e i Managed Service Provider, la chiave è integrare queste misure in un piano di sicurezza globale:
- Implementare un policy engine che blocchi l’installazione di pacchetti non approvati.
- Utilizzare strumenti di software composition analysis (SCA) per monitorare costantemente le dipendenze.
- Formare i team di sviluppo su best practice di sicurezza, inclusa la gestione delle chiavi e dei token.
- Integrare la sicurezza fin dal design delle pipeline, adottando un approccio “shift-left”.
In sintesi, la confusione di dipendenze rappresenta una minaccia concreta per la sicurezza delle pipeline CI/CD. Adottare un modello Zero Trust, con controlli di accesso rigorosi e monitoraggio continuo, è l’unica strada per proteggere le infrastrutture di sviluppo e prevenire l’esfiltrazione di dati sensibili.