Sommario
Una nuova ricerca ha scoperto che oltre 15.000 repository di moduli Go su GitHub sono vulnerabili a un attacco chiamato repojacking. Più di 9.000 repository sono vulnerabili a repojacking a causa di cambiamenti nel nome utente di GitHub, mentre più di 6.000 sono vulnerabili a causa della cancellazione dell’account. Collettivamente, questi repository rappresentano non meno di 800.000 versioni di moduli Go.
Cos’è il RepoJacking?
Repojacking, una combinazione delle parole “repository” e “hijacking” (dirottamento), è una tecnica di attacco che consente a un malintenzionato di sfruttare i cambiamenti del nome utente dell’account e le cancellazioni per creare un repository con lo stesso nome e il precedente nome utente per organizzare attacchi alla catena di fornitura di software open-source.
Vulnerabilità dei Moduli Go
I moduli scritti nel linguaggio di programmazione Go sono particolarmente suscettibili a repojacking, poiché, a differenza di altre soluzioni di gestione dei pacchetti come npm o PyPI, sono decentralizzati in quanto vengono pubblicati su piattaforme di controllo versione come GitHub o Bitbucket. Un attaccante può registrare il nome utente non più utilizzato, duplicare il repository del modulo e pubblicare un nuovo modulo su proxy.golang.org e go.pkg.dev.
Misure di prevenzione di GitHub
Per prevenire che gli sviluppatori scarichino pacchetti potenzialmente non sicuri, GitHub ha messo in atto una contromisura chiamata “popular repository namespace retirement” che blocca i tentativi di creare repository con i nomi di spazi dei nomi ritirati che sono stati clonati più di 100 volte prima che gli account dei proprietari venissero rinominati o cancellati. Tuttavia, questa protezione non è utile per i moduli Go, poiché sono memorizzati nella cache dal modulo mirror, eliminando la necessità di interagire o clonare un repository.
Risposta e mitigazione
Jacob Baines, chief technology officer di VulnCheck, ha affermato che mitigare tutti questi repojacking è qualcosa che Go o GitHub dovranno affrontare. Fino ad allora, è importante che gli sviluppatori Go siano consapevoli dei moduli che utilizzano e dello stato del repository da cui i moduli provengono.
La divulgazione arriva anche mentre Lasso Security ha scoperto 1.681 token API esposti su Hugging Face e GitHub, inclusi quelli associati a Google, Meta, Microsoft e VMware, che potrebbero essere potenzialmente sfruttati per organizzare attacchi alla catena di fornitura, avvelenamento dei dati di addestramento e furto di modelli.