Una vulnerabilità che consentiva di rilasciare un aggiornamento per qualsiasi pacchetto nel repository NPM.

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

La vulnerabilità è stata causata da una verifica impropria delle autorizzazioni nel codice dei microservizi che gestiscono le richieste a NPM. Il servizio di autorizzazione verificava i diritti di accesso ai pacchetti sulla base dei dati trasmessi nella richiesta, ma un altro servizio, che carica gli aggiornamenti nel repository, determinava il pacchetto da pubblicare sulla base del contenuto dei metadati nel pacchetto caricato. Così, un aggressore poteva richiedere la pubblicazione di un aggiornamento per il proprio pacchetto, al quale aveva accesso, ma specificare nel pacchetto stesso le informazioni riguardanti un altro pacchetto, che sarebbe stato quello effettivamente aggiornato.

Il problema è stato risolto sei ore dopo la segnalazione della vulnerabilità, ma la vulnerabilità era presente in NPM da più tempo rispetto a quanto registrato dai log di telemetria. GitHub afferma che non sono state registrate prove di attacchi che sfruttano questa vulnerabilità dal settembre 2020, ma non ci sono garanzie che il problema non sia stato sfruttato prima.

Il secondo incidente è avvenuto il 26 ottobre. Durante i lavori tecnici sul database del servizio replicate.npmjs.com è stata rilevata la presenza di dati riservati accessibili tramite richieste esterne, che rivelano informazioni sui nomi dei pacchetti interni menzionati nel log delle modifiche. Le informazioni su tali nomi potrebbero essere utilizzate per attaccare le dipendenze nei progetti interni (a febbraio, un attacco simile ha consentito l'esecuzione di codice su server PayPal, Microsoft, Apple, Netflix, Uber e altre 30 aziende).

Inoltre, a causa dell'aumento dei casi di appropriazione dei repository di grandi progetti e della promozione di codice dannoso attraverso la compromissione degli account degli sviluppatori, GitHub ha deciso di introdurre l'autenticazione a due fattori obbligatoria. La modifica entrerà in vigore nel primo trimestre del 2022 e si applicherà ai manutentori e agli amministratori dei pacchetti inclusi nell'elenco dei più popolari. È inoltre prevista una modernizzazione dell'infrastruttura, con l'implementazione di un monitoraggio e analisi automatizzati delle nuove versioni dei pacchetti per l'identificazione precoce delle 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, presenti in noti leak di dati. 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 di utenti tra i 20 pacchetti più popolari, 13 account di pacchetti 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 attraverso le dipendenze, la compromissione di account inaffidabili avrebbe potuto colpire fino al 52% di tutti i moduli in NPM.

Fonte: opennet.ru

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster