Una grave vulnerabilità di sicurezza, ora risolta, che ha interessato Google Cloud Platform (GCP) Composer avrebbe potuto essere sfruttata per eseguire codice da remoto sui server cloud tramite una tecnica di attacco alla supply chain chiamata dependency confusion.
La vulnerabilità è stata denominata CloudImposer dal team di ricerca di Tenable.
In cosa consiste la vulnerabilità di Google Cloud Platform (GCP)
“La vulnerabilità [di GCP] avrebbe potuto consentire a un attaccante di dirottare una dipendenza software interna che Google preinstalla su ogni strumento di orchestrazione delle pipeline di Google Cloud Composer,” ha dichiarato la ricercatrice di sicurezza Liv Matan in un rapporto.
Il dependency confusion (noto anche come attacco di sostituzione), documentato per la prima volta dal ricercatore di sicurezza informatica Alex Birsan nel febbraio 2021, si riferisce a un tipo di compromissione della supply chain software in cui un gestore di pacchetti viene ingannato a scaricare un pacchetto dannoso da un repository pubblico, anziché il file previsto con lo stesso nome da un repository interno.
Quindi, un criminale informatico potrebbe orchestrare un attacco alla supply chain su larga scala pubblicando un pacchetto contraffatto su un repository pubblico con lo stesso nome di un pacchetto sviluppato internamente da aziende, ma con un numero di versione superiore.
Ciò, a sua volta, fa sì che il gestore dei pacchetti scarichi inconsapevolmente il pacchetto dannoso dal repository pubblico invece di quello privato, sostituendo di fatto la dipendenza del pacchetto esistente con la sua controparte malevola.
Un problema simile a CloudImposer sfrutta Google Cloud Platform (GCP) per distribuire pacchetti dannosi Python
Il problema identificato da Tenable è simile, in quanto potrebbe essere sfruttato per caricare un pacchetto dannoso nel repository Python Package Index (PyPI) con il nome “google-cloud-datacatalog-lineage-producer-client,” che poi potrebbe essere preinstallato su tutte le istanze di Composer con permessi elevati.
Anche se Cloud Composer richiede che il pacchetto in questione sia fissato a una versione specifica (cioè, la versione 0.1.0), Tenable ha scoperto che utilizzando l’argomento “–extra-index-url” durante un comando “pip install” (che sono comandi tipici del mondo Linux, solitamente, ma possono essere usati anche su PowerShell, previa installazione di Python) si dà priorità al recupero del pacchetto dal registro pubblico, aprendo così la porta al dependency confusion.
Dotati di questo privilegio, gli attaccanti potrebbero eseguire codice, esfiltrare le credenziali dell’account di servizio e muoversi lateralmente nell’ambiente della vittima verso altri servizi GCP.
La risoluzione finale del problema di Google Cloud Platform (GCP)
A seguito di una divulgazione responsabile il 18 gennaio 2024, Google ha risolto il problema a maggio 2024 assicurandosi che il pacchetto venga installato solo da un repository privato e ha anche aggiunto l’ulteriore precauzione di verificare il checksum del pacchetto per confermarne l’integrità e validare che non sia stato manomesso.
Si pensa che la Python Packaging Authority (PyPA) fosse a conoscenza dei rischi posti dall’argomento “–extra-index-url” almeno dal marzo 2018, esortando gli utenti a evitare di utilizzare PyPI nei casi in cui sia necessario recuperare pacchetti interni.
“I pacchetti devono essere unici per nome e versione, quindi due pacchetti con lo stesso nome e versione vengono trattati come indistinguibili da pip“, ha osservato un membro della PyPA all’epoca. “Questa è una caratteristica deliberata dei metadati del pacchetto e non è probabile che cambi.”
Google, come parte della sua correzione, ora raccomanda anche agli sviluppatori di utilizzare l’argomento “–index-url” invece di “–extra-index-url” e che i clienti di GCP utilizzino un repository virtuale di Artifact Registry quando necessitano di più repository.
“L’argomento ‘–index-url’ riduce il rischio di attacchi di dependency confusion cercando i pacchetti solo nel registro definito come valore per quell’argomento,” ha detto Matan.