Un nuovo metodo di attacco alla supply chain che prende di mira il registro Python Package Index (PyPI) è stato sfruttato nel web nel tentativo di infiltrarsi in varie organizzazioni: il suo nome è “Revival Hijack“.
Revival Hijack: cos’è questo attacco e come funziona
Questo attacco è stato soprannominato come appena detto “Revival Hijack” dalla società di sicurezza della supply chain software JFrog, la quale ha affermato che il metodo di attacco potrebbe essere utilizzato per dirottare 22.000 pacchetti PyPI esistenti e provocare “centinaia di migliaia” di download di pacchetti dannosi; questi pacchetti vulnerabili hanno più di 100.000 download o sono attivi da oltre sei mesi.
“Questa tecnica di attacco [Revival Hijack] consiste nel dirottare pacchetti software PyPI manipolando l’opzione di ri-registrarli una volta che vengono rimossi dall’indice PyPI dal proprietario originale“, hanno dichiarato i ricercatori di sicurezza di JFrog Andrey Polkovnychenko e Brian Moussalli in un rapporto.
Alla base, l’attacco Revival Hijack si basa sul fatto che diversi pacchetti Python pubblicati nel repository PyPI vengono rimossi, rendendoli disponibili per la registrazione a qualsiasi altro utente.
Le statistiche condivise da JFrog mostrano che circa 309 pacchetti vengono rimossi ogni mese in media e questi potrebbero essere rimossi per diversi motivi: mancanza di manutenzione (ovvero, abbandono), ripubblicazione del pacchetto con un nome diverso, o introduzione della stessa funzionalità nelle librerie ufficiali o nelle API integrate.
Attacco Revival Hijack e possibili furti di dati all’orizzonte
Questo rappresenta anche una superficie di attacco redditizia, più efficace del typosquatting, che un attaccante, utilizzando i propri account, potrebbe sfruttare per pubblicare pacchetti dannosi con lo stesso nome e una versione superiore per infettare gli ambienti degli sviluppatori.
“La tecnica non si basa su un errore della vittima durante l’installazione del pacchetto“, hanno detto i ricercatori, sottolineando come il Revival Hijack possa dare risultati migliori dal punto di vista di un avversario. “Aggiornare un pacchetto ‘una volta sicuro’ alla sua ultima versione è considerato un’operazione sicura da molti utenti.”
Sebbene PyPI disponga di misure di sicurezza contro l’impersonificazione degli autori e i tentativi di typosquatting, l’analisi di JFrog ha rilevato che eseguire il comando “pip list –outdated” elenca il pacchetto falso come una nuova versione del pacchetto originale, dove il primo corrisponde a un pacchetto diverso da un autore completamente diverso.
Ancora più preoccupante, eseguendo il comando “pip install –upgrade” si sostituisce il pacchetto reale con quello fasullo senza alcun avviso che l’autore del pacchetto è cambiato, esponendo potenzialmente gli sviluppatori inconsapevoli a un enorme rischio per la supply chain software.
Le conclusioni di JFrog
JFrog ha dichiarato di aver creato un nuovo account utente PyPI chiamato “security_holding” che ha utilizzato per dirottare in sicurezza i pacchetti vulnerabili e sostituirli con segnaposto vuoti, in modo da impedire che criminali informatici sfruttassero i pacchetti rimossi.
Inoltre, a ciascuno di questi pacchetti è stato assegnato il numero di versione 0.0.0.1 – l’opposto di uno scenario di attacco di confusione delle dipendenze, per evitare che vengano recuperati dagli sviluppatori durante l’esecuzione di un comando di aggiornamento pip.
Ancora più inquietante è il fatto che il Revival Hijack sia già stato sfruttato in contesti reali, con un crimnale informatico non noto chiamato Jinnis che ha introdotto una versione innocua di un pacchetto chiamato “pingdomv3” il 30 marzo 2024, lo stesso giorno in cui il proprietario originale (cheneyyan) ha rimosso il pacchetto da PyPI.
Il 12 aprile 2024, si dice che il nuovo sviluppatore abbia rilasciato un aggiornamento contenente un payload codificato in Base64 che controlla la presenza della variabile di ambiente “JENKINS_URL” e, se presente, esegue un modulo di fase successiva sconosciuto recuperato da un server remoto.
“Questo suggerisce che gli attaccanti hanno ritardato la consegna dell’attacco o lo hanno progettato per essere più mirato, limitandolo possibilmente a un intervallo IP specifico“, ha detto JFrog.
L’attacco Revival Hijack non crea (per fortuna) danni irreparabili (sembra)
Il nuovo attacco è un segno che i criminali informatici stanno puntando ad attacchi alla supply chain su scala più ampia, prendendo di mira pacchetti PyPI eliminati al fine di espandere la portata delle campagne; si raccomanda alle organizzazioni e agli sviluppatori di ispezionare le loro pipeline DevOps per assicurarsi che non stiano installando pacchetti che sono già stati rimossi dal repository.
“L’utilizzo di un comportamento vulnerabile nella gestione dei pacchetti rimossi ha permesso agli attaccanti di dirottare pacchetti esistenti, rendendo possibile installarli sui sistemi target senza alcun cambiamento nel flusso di lavoro dell’utente“, ha affermato Moussalli, Team Lead della Ricerca sulla Sicurezza di JFrog.
“La superficie di attacco dei pacchetti PyPI è in continua crescita. Nonostante un intervento proattivo in questo caso, gli utenti dovrebbero sempre rimanere vigili e prendere le precauzioni necessarie per proteggersi e proteggere la comunità PyPI da questa tecnica di dirottamento.”