Ei au descoperit o vulnerabilitate în RubyGems.org care a permis înlocuirea pachetelor

Recent s-a dat vestea asta O vulnerabilitate critică a fost identificată în depozitul de pachete rubygems.org (vulnerabilitatea este deja catalogată sub CVE-2022-29176), care permite fără autorizația corespunzătoare, înlocuiți pachetele altor persoane în depozit, smulgând un pachet legitim și încărcând un alt fișier cu același nume și număr de versiune în locul lui.

Se menționează că vulnerabilitatea se datorează unei erori în gestionarea acțiunii „yank”., care tratează partea de nume după cratimă ca fiind numele platformei, ceea ce a făcut posibilă inițierea eliminării pachetelor externe care se potrivesc cu partea de nume până la caracterul cratima.

În special în codul de control al operaţiunii „tras”, apelul „găsește_de!(nume_complet: „#{rubygem.name}-#{slug}”)” a fost folosit pentru a căuta pachete, în timp ce parametrul „slug” a fost transmis proprietarului pachetului pentru a determina versiunea de eliminat.

Proprietarul pachetului „rails-html” ar fi putut specifica „sanitizer-1.2.3” în loc de versiunea „1.2.3”, ceea ce ar face ca operațiunea să se aplice la „rails-html-sanitizer-1.2.3” pachet ″ de la altcineva. »

Un aviz de securitate pentru Rubygems.org a fost publicat ieri.

Avizul se referea la o eroare care permitea unui utilizator rău intenționat să extragă anumite pietre și să încarce fișiere diferite cu același nume, număr de versiune și platformă diferită.

Să aruncăm o privire mai profundă pentru a vedea ce a mers prost în timpul procesului de extracție. Ca pretext, să ne imaginăm un scenariu în care creăm o bijuterie numită „rails-html” cu intenția de a obține acces neautorizat la bijuteria „rails-html-sanitizer” folosită pe scară largă.

Se menționează că trebuie îndeplinite trei condiții, pentru a exploata cu succes această vulnerabilitate:

  • Atacul poate fi efectuat numai asupra pachetelor care au un caracter cratimă în numele lor.
  • Un atacator ar trebui să poată plasa un pachet de pietre prețioase cu o parte din nume până la caracterul cratima. De exemplu, dacă atacul este împotriva pachetului „rails-html-sanitizer”, atacatorul trebuie să-și pună propriul pachet „rails-html” în depozit.
  • Pachetul atacat trebuie să fi fost creat în ultimele 30 de zile sau să nu fi fost actualizat timp de 100 de zile.

Problema a fost identificat de un cercetător de securitate ca parte a programului de recompense HackerOne pentru găsirea problemelor de securitate în proiectele open source cunoscute.

Problema remediat la RubyGems.org pe 5 mai și conform dezvoltatorilor, nu au identificat încă urme de exploatare a vulnerabilității din jurnalele din ultimele 18 luni. În același timp, până acum a fost efectuat doar un audit superficial și este planificat un audit mai aprofundat în viitor.

În prezent, credem că această vulnerabilitate nu a fost exploatată.

RubyGems.org trimite un e-mail tuturor deținătorilor de bijuterii atunci când o versiune de bijuterie este lansată sau eliminată. Nu am primit niciun e-mail de asistență de la proprietarii de bijuterii care să indice că bijuteria lor a fost extrasă fără autorizație.

Un audit al modificărilor bijuteriilor din ultimele 18 luni nu a găsit exemple de utilizare rău intenționată a acestei vulnerabilități. Auditarea ulterioară pentru orice posibilă utilizare a acestui exploit nu a găsit nicio instanță în care acest exploit să fie folosit pentru a prelua o bijuterie fără autorizație în istoria RubyGems. Nu putem garanta că nu s-a întâmplat niciodată, dar nu pare probabil.

Pentru a vă verifica proiectele, este recomandat să analizați istoricul operațiunilor din fișierul Gemfile.lock. Activitatea rău intenționată este exprimată în prezența unor modificări cu același nume și versiune, sau o schimbare a platformei (de exemplu, atunci când un pachet xxx-1.2.3 .1.2.3 este actualizat la xxx-XNUMX-xxx).

Ca solutie împotriva falsificării pachetelor ascunse în sisteme de integrare continuă sau la publicarea proiectelor, Dezvoltatorilor li se recomandă să folosească Bundler cu opțiunile „–înghețat” sau „–implementare” pentru a confirma dependențele.

În cele din urmă, dacă sunteți interesat să aflați mai multe despre asta, puteți verifica detaliile în următorul link.


Conținutul articolului respectă principiile noastre de etică editorială. Pentru a raporta o eroare, faceți clic pe aici.

Fii primul care comenteaza

Lasă comentariul tău

Adresa ta de email nu va fi publicată.

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.