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ție corespunzătoare, înlocuiți pachetele altor persoane în depozit prin inițierea smulgerii unui pachet legitim și încărcarea unui 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ă drept nume de platformă, ceea ce a făcut posibilă începerea eliminării pachetelor externe care se potrivesc cu partea de nume până la caracterul cratimă.

În special în codul controlerului de operare „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 ce versiune să elimine.

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 a fost postat ieri pentru Rubygems.org.

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

Să aruncăm o privire mai profundă pentru a vedea ce a mers prost atunci când trecem prin procesul 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ă arunca 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 plaseze 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 a găsi probleme de securitate în proiectele open source cunoscute.

Problema rezolvat pe RubyGems.org pe 5 mai și conform dezvoltatorilor, urme de exploatare nu au fost încă identificate a vulnerabilității din înregistrări în 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 proprietarilor de bijuterii atunci când o versiune de bijuterie este publicată 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 bijuteriei din ultimele 18 luni nu a găsit exemple de utilizare rău intenționată a acestei vulnerabilități. Un audit mai profund pentru orice posibilă utilizare a acestui exploit nu a găsit niciun exemplu în care acest exploit ar fi 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 este actualizat la xxx-1.2.3-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.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  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.