Una vulnerabilità che ha consentito il rilascio di un aggiornamento per qualsiasi pacchetto nel repository NPM

GitHub ha rivelato due incidenti nella sua infrastruttura di repository di pacchetti NPM. Il 2 novembre, ricercatori di sicurezza di terze parti (Kajetan Grzybowski e Maciej Piechota), nell'ambito del programma Bug Bounty, hanno segnalato la presenza di una vulnerabilità nel repository NPM che consente di pubblicare una nuova versione di qualsiasi pacchetto utilizzando il proprio account, che non è autorizzato ad eseguire tali aggiornamenti.

La vulnerabilità è stata causata da controlli errati delle autorizzazioni nel codice dei microservizi che elaborano le richieste a NPM. Il servizio di autorizzazione ha eseguito i controlli delle autorizzazioni del pacchetto in base ai dati passati nella richiesta, ma un altro servizio che ha caricato l'aggiornamento nel repository ha determinato il pacchetto da pubblicare in base al contenuto dei metadati del pacchetto caricato. Pertanto, un utente malintenzionato potrebbe richiedere la pubblicazione di un aggiornamento per il suo pacchetto, al quale ha accesso, ma specificare nel pacchetto stesso informazioni su un altro pacchetto, che alla fine verrebbe aggiornato.

Il problema è stato risolto 6 ore dopo la segnalazione della vulnerabilità, ma la vulnerabilità era presente in NPM per un periodo più lungo di quello coperto dai log di telemetria. GitHub sostiene che non ci sono tracce di attacchi che sfruttano questa vulnerabilità da settembre 2020, ma non vi è alcuna garanzia che il problema non sia stato sfruttato prima.

Il secondo incidente è avvenuto il 26 ottobre. Durante il lavoro tecnico con il database del servizio replicate.npmjs.com, è stata rivelata la presenza di dati riservati nel database accessibile a richieste esterne, rivelando informazioni sui nomi dei pacchetti interni menzionati nel registro delle modifiche. Le informazioni su tali nomi possono essere utilizzate per effettuare attacchi di dipendenza su progetti interni (a febbraio un attacco simile ha consentito l'esecuzione di codice sui server di PayPal, Microsoft, Apple, Netflix, Uber e altre 30 società).

Inoltre, a causa del crescente numero di casi di dirottamento di repository di grandi progetti e di promozione di codice dannoso attraverso la compromissione degli account degli sviluppatori, GitHub ha deciso di introdurre l'autenticazione obbligatoria a due fattori. La modifica entrerà in vigore nel primo trimestre del 2022 e si applicherà ai manutentori e agli amministratori dei pacchetti inclusi nell'elenco più popolari. Inoltre, viene segnalato l'ammodernamento dell'infrastruttura, in cui verranno introdotti il ​​monitoraggio e l'analisi automatizzati delle nuove versioni dei pacchetti per il rilevamento tempestivo di modifiche dannose.

Ricordiamo che, secondo uno studio condotto nel 2020, solo il 9.27% dei manutentori dei pacchetti utilizza l'autenticazione a due fattori per proteggere l'accesso e nel 13.37% dei casi, durante la registrazione di nuovi account, gli sviluppatori hanno cercato di riutilizzare le password compromesse apparse in perdite di password note. Durante un controllo sulla sicurezza delle password, è stato effettuato l'accesso al 12% degli account NPM (13% dei pacchetti) a causa dell'uso di password prevedibili e banali come "123456". Tra quelli problematici c'erano 4 account utente della Top20 dei pacchetti più popolari, 13 account con pacchetti scaricati più di 50 milioni di volte al mese, 40 con più di 10 milioni di download al mese e 282 con più di 1 milione di download al mese. Tenendo conto del caricamento dei moduli lungo una catena di dipendenze, la compromissione degli account non attendibili potrebbe interessare fino al 52% di tutti i moduli in NPM.

Fonte: opennet.ru

Aggiungi un commento