L'azienda GitHub ha rivelato informazioni su due incidenti nell'infrastruttura del repository dei pacchetti NPM. Il 2 novembre, ricercatori di sicurezza esterni (Kajetan Grzybowski e Maciej Piechota) hanno segnalato nell'ambito del programma Bug Bounty la presenza in NPM di una vulnerabilità che consentiva di pubblicare una nuova versione di qualsiasi pacchetto utilizzando il proprio account, non autorizzato per effettuare tali aggiornamenti.
La vulnerabilità era causata da un controllo delle autorizzazioni errato nel codice dei microservizi che gestivano le richieste verso NPM. Il servizio di autorizzazione controllava i diritti di accesso ai pacchetti sulla base dei dati forniti nella richiesta, ma un altro servizio, responsabile del caricamento dell'aggiornamento nel repository, determinava il pacchetto da pubblicare in base al contenuto dei metadati nel pacchetto caricato. In questo modo, un attaccante poteva richiedere la pubblicazione di un aggiornamento per il proprio pacchetto, al quale aveva accesso, ma specificare nel pacchetto stesso le informazioni relative a un altro pacchetto, che sarebbe stato aggiornato.
Il problema è stato risolto sei ore dopo la notizia della vulnerabilità, ma quest'ultima era presente in NPM per un periodo più lungo di quanto coprono i log di telemetria. GitHub afferma che non sono stati registrati segni di attacchi sfruttando questa vulnerabilità dal settembre 2020, ma non ci sono garanzie che il problema non sia stato sfruttato in precedenza.
Il secondo incidente si è verificato il 26 ottobre. Durante i lavori tecnici sul database del servizio replicate.npmjs.com, è emersa la presenza in un database accessibile a richieste esterne di dati riservati, che rivelavano informazioni sui nomi di pacchetti interni menzionati nel log delle modifiche. Informazioni su tali nomi possono essere utilizzate per attacchi alle dipendenze in progetti interni (a febbraio, un attacco simile ha permesso di eseguire codice su server PayPal, Microsoft, Apple, Netflix, Uber e altre 30 aziende).
Inoltre, a causa del crescente numero di casi di esposizione di repository di grandi progetti e diffusione di codice dannoso tramite la compromissione degli account degli sviluppatori, l'azienda GitHub ha deciso di introdurre l'autenticazione a due fattori obbligatoria. La modifica entrerà in vigore nel primo trimestre del 2022 e sarà applicata ai manutentori e agli amministratori dei pacchetti elencati tra i più popolari. Si segnala inoltre un aggiornamento dell'infrastruttura, che includerà un monitoraggio e un'analisi automatizzati delle nuove versioni dei pacchetti per la rilevazione precoce di modifiche dannose.
Ricordiamo che, secondo uno studio condotto nel 2020, solo il 9,27% dei manutentori di pacchetti utilizza l'autenticazione a due fattori per proteggere l'accesso, mentre nel 13,37% dei casi, durante la registrazione di nuovi account, gli sviluppatori hanno tentato di riutilizzare password compromesse che erano state coinvolte in noti data breach. Durante il controllo dell'affidabilità delle password utilizzate, è stato possibile accedere al 12% degli account su NPM (13% dei pacchetti) a causa dell'uso di password prevedibili e banali, come "123456". Tra i problemi riscontrati ci sono stati 4 account utente tra i Top20 dei pacchetti più popolari, 13 account i cui pacchetti sono stati scaricati più di 50 milioni di volte al mese, 40 con oltre 10 milioni di download al mese e 282 con oltre 1 milione di download al mese. Considerando il caricamento dei moduli in base alle dipendenze, la compromissione di account non sicuri potrebbe aver colpito fino al 52% di tutti i moduli in NPM.
Fonte: opennet.ru
