Sebbene appartenente al gruppo Microsoft, Github è particolarmente amato dagli amanti di Linux, poiché contiene svariate applicazioni open source, nonché codici sorgenti di programmi spesso anche difficili da trovare.
Insomma, questa piattaforma è un vero e proprio paradiso per i programmatori e in generale per gli smanettoni.
Peccato che la piattaforma si ritrovi al centro di un problemino: un bug che, pare, abbia permesso di poter “dirottare” i repository di altri utenti.
Questo genere di “dirottamenti”, sono abbastanza frequenti in questo campo e nel campo delle criptovalute.
Prima di cominciare: cos’è un “repository”?
Un repository non è che un “ripostiglio”, se hai già dimestichezza con sistemi Linux sicuramente hai già una vaga idea di cosa si può trattare.
In ogni caso, citando Wikipedia: “si tratta di un ambiente che può essere implementato attraverso numerose piattaforme hardware e sistemi di gestione delle basi di dati“.
Facendola breve: sono dei “pacchetti” di dati che servono al bisogno quando si necessita di fare alcune tipologie di installazione, se sei un programmatore non è che qualcosa di molto simile alle librerire del C++ (tipo iostream.h, per capirci).
Quindi, qual era il problema con i repository GitHub?
Il servizio di hosting di repository basato su cloud GitHub ha di recente risolto un difetto di sicurezza piuttosto grave, che avrebbe potuto essere sfruttato per creare repository dannosi e creare attacchi concatenati agli utenti.
La tecnica RepoJacking, divulgata da Checkmarx, è basata sul bypass di un meccanismo di protezione chiamato “ritiro dello spazio dei nomi dei repository popolari“, il quale impedisce agli sviluppatori di estrarre repository non sicuri con lo stesso nome.
La questione è stata affrontata da parte di Microsoft (essendo sua questa piattaforma) il 19 settembre 2022 a seguito della divulgazione dei responsabili.
Il RepoJacking si verifica quando un creatore di un repository sceglie di modificare il nome utente, consentendo potenzialmente ad un malintenzionato di “rivendicare” il vecchio nome utente e pubblicare un repository fantoccio con lo stesso nome nel tentativo di indurre gli utenti a scaricarlo.
La contromisura di Microsoft “fa ritirare [si intende a livello di database] lo spazio dei nomi di qualsiasi progetto open source che ha avuto più di 100 cloni nella settimana che ha portato alla ridenominazione o all’eliminazione dell’account del proprietario“, Checkmarx ha scoperto che ciò può essere aggirato attraverso la funzione di “repository transfer” .
Il modo in cui funziona l’attacco RepoJacking è il seguente:
- Un malintenzionato crea un repository con lo stesso nome del repository preso di mira (ad esempio, “repo”) di proprietà di un utente denominato “vittima” ma con un nome utente diverso (ad esempio, “helper”)
- “helper” trasferisce la proprietà di “repo” a un secondo account con nome utente “attacker”
- “attaccante” rinomina il nome utente dell’account in “vittima”
- Lo spazio dei nomi “vittima/repo” è ora sotto il controllo del malintenzionato
In altre parole, l’attacco dipende dalla peculiarità di GitHub che considera “ritirato” solo lo spazio dei nomi, ovvero la combinazione di nome utente e nome del repository, consentendo a un a persona con intenzioni non buonissime di riutilizzare il nome del repository insieme a un nome utente creato sul momento.
Un explout ben riuscito avrebbe potuto effettivamente consentire agli aggressori di propagare repository infetti (e GitHub di fatto ha anche dei virus e dei malware al suo interno…), mettendo i nomi utente rinominati a rischio di essere vittime di attacchi a catena.
“Se non esplicitamente curati, tutti i nomi utente rinominati su GitHub erano vulnerabili a questo difetto, inclusi oltre 10.000 pacchetti sui gestori di pacchetti Go, Swift e Packagist“, ha affermato il ricercatore di Checkmarx Aviad Gershon.
Fortunatamente il problema è stato risolto.