Un attacco di dipendenza consente l'esecuzione di codice su PayPal, Microsoft, Apple, Netflix, Uber e altre 30 società

Pochi giorni fa è stato rilasciato un metodo sorprendentemente semplice che consente di attaccare le dipendenze nelle applicazioni che vengono sviluppati utilizzando repository di pacchetti interni. I ricercatori che hanno identificato il problema sono stati in grado di eseguire il codice sui server interni di 35 società, tra cui PayPal, Microsoft, Apple, Netflix, Uber, Tesla e Shopify.

Gli hack sono stati effettuati nell'ambito dei programmi Bug Bounty, in coordinamento con le aziende attaccate, e gli autori hanno già ricevuto $ 130.000 in bonus per l'identificazione delle vulnerabilità.

Il metodo si basa sul fatto che molte aziende utilizzano le dipendenze di repository standard di NPM, PyPI e RubyGems nelle loro applicazioni interne, così come le dipendenze interne che non sono distribuite pubblicamente o scaricate dai propri repository.

Il problema è che i gestori di pacchetti come npm, pip e gem Tentano di scaricare le dipendenze interne delle aziende, anche dai repository pubblici. Per un attacco basta definire i nomi dei pacchetti con dipendenze interne e creare i propri pacchetti con gli stessi nomi nei repository pubblici di NPM, PyPI e RubyGems.

Il problema non è specifico di NPM, PyPI e RubyGems e si manifesta anche su altri sistemi come NuGet, Maven e Yarn.

L'idea per il metodo proposto è nata dopo che un ricercatore ha notato accidentalmente che nel codice pubblicamente disponibile pubblicato su GitHub, molte aziende non rimuovono la menzione di dipendenze aggiuntive dai loro file manifest utilizzato in progetti interni o quando si implementano funzionalità estese. Tracce simili sono state trovate nel codice JavaScript dei servizi web, così come nei progetti Node.JS, Python e Ruby di molte aziende.

Le principali fughe di notizie erano relative all'incorporamento del contenuto dai file package.json nel codice JavaScript pubblicamente disponibile durante il processo di compilazione, così come con l'uso di elementi di percorso effettivi nelle chiamate require (), che possono essere usati per giudicare i nomi delle dipendenze.

La scansione di diversi milioni di domini aziendali ha rivelato diverse migliaia di nomi di pacchetti JavaScript che non erano nel repository NPM. Dopo aver compilato un database di nomi di pacchetti interni, il ricercatore ha deciso di condurre un esperimento per hackerare l'infrastruttura delle aziende che partecipano ai programmi Bug Bounty. I risultati sono stati sorprendentemente efficaci e il ricercatore è stato in grado di eseguire il suo codice su molti computer e server di sviluppo responsabili della creazione o del test basati su sistemi di integrazione continua.

Durante il download delle dipendenze, i gestori di pacchetti npm, pip e gem installa principalmente pacchetti dai repository pubblici primari NPM, PyPI e RubyGems, considerati con priorità più alta.

La presenza di pacchetti simili con lo stesso nome nei repository di aziende private è stata ignorata senza mostrare alcun avviso o causare arresti anomali che potrebbe attirare l'attenzione degli amministratori. In PyPI, la priorità di download era influenzata dal numero di versione (indipendentemente dal repository, è stata scaricata la versione più recente del pacchetto). In NPM e RubyGems, la priorità dipendeva solo dal repository.

Il ricercatore ha inserito pacchetti nei repository NPM, PyPI e RubyGems che incrociano i nomi delle dipendenze interne trovate, aggiungendo codice allo script che viene eseguito prima dell'installazione (preinstallato in NPM) per raccogliere informazioni sul sistema e inviare le informazioni ricevute a l'host esterno.

Per trasmettere informazioni sul successo dell'hacking, aggira i firewall che bloccano il traffico esterno, il metodo per organizzare le comunicazioni di canale nascosto tramite il protocollo DNS. Il codice in esecuzione ha risolto l'host nel dominio attaccante sotto il controllo del dominio attaccante, il che ha permesso di raccogliere informazioni sulle operazioni riuscite sul server DNS. Sono state trasmesse informazioni su host, nome utente e percorso corrente.

Il 75% di tutte le esecuzioni di codice registrate erano associate ai download di pacchetti NPM, principalmente a causa del fatto che c'erano molti più nomi di moduli JavaScript interni rispetto ai nomi di dipendenza Python e Ruby.

fonte: https://medium.com/


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.