RubyGems.orgin haavoittuvuus, joka mahdollistaa muiden pakettien huijauksen

RubyGems.org-pakettivarastosta on tunnistettu kriittinen haavoittuvuus (CVE-2022-29176), joka mahdollistaa joidenkin muiden pakettien korvaamisen arkistossa ilman asianmukaisia ​​valtuuksia käynnistämällä laillisen paketin nykimisen ja lataamisen sen tilalle. toinen tiedosto, jolla on sama nimi ja versionumero.

Jotta haavoittuvuus voidaan hyödyntää onnistuneesti, kolmen ehdon on täytyttävä:

  • Hyökkäys voidaan suorittaa vain paketeille, joiden nimessä on väliviiva.
  • Hyökkääjän on pystyttävä sijoittamaan jalokivipaketti, jossa on osa nimestä ennen yhdysmerkkiä. Jos hyökkäys kohdistuu esimerkiksi "rails-html-sanitizer"-pakettiin, hyökkääjän on sijoitettava oma "rails-html"-pakettinsa arkistoon.
  • Hyökkäyksen kohteena olevan paketin on oltava luotu viimeisten 30 päivän aikana tai sitä ei ole päivitetty 100 päivään.

Haavoittuvuuden aiheuttaa virhe "Ynk"-toimintokäsittelijässä, joka tulkitsee yhdysviivan jälkeisen nimen osan alustan nimeksi, mikä mahdollisti nimen osaa vastaavien vieraiden pakettien poistamisen. ennen tavuviivaa. Erityisesti "yank"-käsittelijäkoodissa 'find_by!(full_name: "#{rubygem.name}-#{slug}")" -kutsua käytettiin pakettien etsimiseen, kun taas "slug"-parametri välitti pakettien. paketin omistaja määrittää poistettavan version. Paketin "rails-html" omistaja voisi määrittää "sanitizer-1.2.3" version "1.2.3" sijasta, mikä aiheuttaisi toiminnon soveltamisen jonkun muun pakettiin "rails-html-sanitizer-1.2.3". ".

Tietoturvatutkija tunnisti ongelman osana HackerOnen palkkioohjelmaa tietoturvaongelmien löytämiseksi tunnetuista avoimen lähdekoodin projekteista. Ongelma korjattiin RubyGems.orgissa 5. toukokuuta, ja kehittäjien mukaan he eivät ole vielä havainneet merkkejä haavoittuvuuden hyödyntämisestä lokeissa viimeisen 18 kuukauden aikana. Samaan aikaan on toistaiseksi tehty vain pinnallinen tarkastus ja jatkossa on suunnitteilla syvempää tarkastusta.

Projektien tarkistamiseksi on suositeltavaa analysoida Gemfile.lock-tiedoston toimintahistoria; haitallinen toiminta ilmaistaan ​​​​muutoksissa, jotka liittyvät nimen ja version säilyttämiseen tai alustan muutokseen (esimerkiksi kun jalokivinimi -1.2.3-paketti on päivitetty muotoon gemname-1.2.3-java). Kiertokeinona suojautua piilotetulta pakettikorvaukselta jatkuvassa integraatiojärjestelmissä tai projekteja julkaistaessa, kehittäjille suositellaan käytettäväksi Bundleria "-jäädytetty"- tai "-deployment"-vaihtoehtojen kanssa riippuvuuksien korjaamiseen.

Lähde: opennet.ru

Lisää kommentti