Hanno scoperto una vulnerabilità in RubyGems.org che ha permesso di sostituire i pacchetti

Recentemente la notizia lo ha reso noto È stata individuata una vulnerabilità critica in il repository del pacchetto rubygems.org (la vulnerabilità è già catalogata sotto CVE-2022-29176), che consentire senza un'adeguata autorizzazione, sostituire i pacchetti di altre persone nel repository estraendo un pacchetto legittimo e caricando al suo posto un altro file con lo stesso nome e numero di versione.

Si è detto che la vulnerabilità è dovuta a un bug nel gestore dell'azione "yank"., che tratta la parte del nome dopo il trattino come nome della piattaforma, il che ha permesso di avviare la rimozione dei pacchetti esterni che corrispondono alla parte del nome fino al carattere del trattino.

In particolare, nel codice del controller dell'operazione "strattone", la chiamata 'find_by!(full_name: "#{rubygem.name}-#{slug}")' è stato utilizzato per cercare i pacchetti, mentre il parametro "slug" è stato passato al proprietario del pacchetto per determinare la versione da rimuovere.

Il proprietario del pacchetto "rails-html" potrebbe aver specificato "sanitizer-1.2.3" invece della versione "1.2.3", il che farebbe applicare l'operazione a "rails-html-sanitizer-1.2.3" pacchetto ″ da qualcun altro. »

Ieri è stato pubblicato un avviso di sicurezza per Rubygems.org.

L'avviso riguardava un bug che consentiva a un utente malintenzionato di estrarre alcune gemme e caricare file diversi con lo stesso nome, numero di versione e piattaforma diversa.

Diamo uno sguardo più approfondito per vedere cosa è andato storto durante il processo di estrazione. Come pretesto, immaginiamo uno scenario in cui creiamo una gemma chiamata "rails-html" con l'intenzione di ottenere un accesso non autorizzato alla gemma "rails-html-sanitizer" ampiamente utilizzata.

Si è detto che devono essere soddisfatte tre condizioni, per sfruttare con successo questa vulnerabilità:

  • L'attacco può essere eseguito solo su pacchetti che hanno un trattino nel nome.
  • Un attaccante dovrebbe essere in grado di piazzare un pacchetto di gemme con parte del nome fino al trattino. Ad esempio, se l'attacco è contro il pacchetto "rails-html-sanitizer", l'attaccante deve inserire il proprio pacchetto "rails-html" nel repository.
  • Il pacco attaccato deve essere stato creato negli ultimi 30 giorni o non aggiornato da 100 giorni.

Il problema è stato identificato da un ricercatore di sicurezza come parte del programma di taglie HackerOne per trovare problemi di sicurezza in noti progetti open source.

Il problema risolto su RubyGems.org il 5 maggio e secondo gli sviluppatori, non hanno ancora individuato tracce di sfruttamento della vulnerabilità nei log degli ultimi 18 mesi. Allo stesso tempo, finora è stato effettuato solo un audit superficiale e in futuro è previsto un audit più approfondito.

Al momento, riteniamo che questa vulnerabilità non sia stata sfruttata.

RubyGems.org invia un'e-mail a tutti i proprietari di gemme quando viene rilasciata o rimossa una versione di gemme. Non abbiamo ricevuto e-mail di supporto dai proprietari di gemme che indichino che la loro gemma è stata estratta senza autorizzazione.

Un controllo delle modifiche alle gemme negli ultimi 18 mesi non ha rilevato esempi di uso dannoso di questa vulnerabilità. Ulteriori controlli per qualsiasi possibile utilizzo di questo exploit non hanno rilevato alcun caso di utilizzo di questo exploit per acquisire una gemma senza autorizzazione nella storia di RubyGems. Non possiamo garantire che non sia mai successo, ma non sembra probabile.

Per verificare i tuoi progetti, si consiglia di analizzare la cronologia delle operazioni nel file Gemfile.lock L'attività dannosa è espressa in presenza di modifiche con lo stesso nome e versione, o un cambio di piattaforma (ad esempio, quando un pacchetto xxx-1.2.3 .1.2.3 è aggiornato a xxx-XNUMX-xxx).

Come soluzione contro lo spoofing di pacchetti nascosti nei sistemi di integrazione continua o durante la pubblicazione di progetti, Si consiglia agli sviluppatori di utilizzare Bundler con le opzioni “–congelato” o “–distribuzione” per confermare le dipendenze.

Infine, se sei interessato a saperne di più, puoi controllare i dettagli nel file seguente link


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.