Lasciarsi schiacciare dalla complessità di alcuni software perdendone il controllo, soprattutto in ambito aziendale, è un grave errore. La ricerca condotta da Alex Birsan ne è un’evidente conferma.
Birsan ha dichiarato infatti di essere riuscito ad accedere alle reti di ben 35 aziende di alto profilo, tra cui Microsoft, Apple, PayPal, Shopify, Netflix, Yelp, Tesla, Uber e diverse altre.
L’esperto si è ovviamente guardato bene dal provocare qualunque danno ma ha dimostrato che quando nella gestione del software vi è anche un solo anello debole, i criminali informatici possono approfittarne.
Noti gestori di pacchetti software come npm, PyPI e RubyGems offrono repository ovvero archivi pubblici dai quali è possibile scaricare e installare varie applicazioni.
Birsan ha spiegato che approfittando di un problema chiamato dependency confusion è possibile indurre i sistemi a scaricare oggetti software malevoli.
Alcuni mesi fa, infatti, un altro ricercatore che ha collaborato con Birsan – Justin Gardner – si è accorto che il file manifest (si chiamano così i file che descrivono il contenuto del pacchetto di un’applicazione specificando anche i requisiti per il corretto funzionamento) usato da PayPal per un pacchetto npm usato internamente dall’azienda conteneva riferimento a file non presenti nel repository pubblico.
In altre parole PayPal stava utilizzando una versione “personalizzata” di un pacchetto npm arricchendola con alcune funzionalità non disponibili pubblicamente (nell’immagine i pacchetti evidenziati in rosso sono quelli sviluppati internamente da PayPal e non disponibili al pubblico).
Birsan ha quindi iniziato a cercare i nomi dei pacchetti “privati” usati dalle varie aziende verificando il contenuto dei file manifest condivisi su GitHub e nelle reti CDN di soggetti di primo piano.
Il ricercatore ha poi iniziato a creare dei nuovi progetti utilizzando gli stessi nomi scelti dalle varie aziende per i pacchetti non presenti nei repository ufficiali di npm, PyPI e RubyGems.
Dopo aver pubblicato ciascun pacchetto sui repository, Birsan ha aggiunto il messaggio seguente: “questo pacchetto è destinato a scopi di ricerca sulla sicurezza e non contiene alcun codice utile“.
Risultato? In molti casi i sistemi per la gestione dei pacchetti utilizzati dalle aziende citate in apertura hanno scaricato dai repository di npm, PyPI e RubyGems le versioni realizzate da Birsan ritenendole più aggiornate rispetto a quelle “private” memorizzate in locale. In realtà non avrebbero dovuto aggiornare nulla perché se i pacchetti realizzati da Birsan avessero ospitato codice dannoso questo sarebbe stato caricato all’interno dell’infrastruttura aziendale con tutte le conseguenze del caso.
Microsoft ha immediatamente preso a cuore il problema preparando anche un white paper che analizza nel dettaglio l’attacco e descrive una serie di metodologie e strumenti per difendersi.
Grazie alla segnalazione responsabile di questo importante problema di sicurezza, Birsan ha ricevuto in premio – soltanto da Microsoft – 40.000 dollari e, complessivamente, da tutte le società coinvolte circa 130.000 dollari.