Natuklasan nila ang isang kahinaan sa RubyGems.org na nagpapahintulot na palitan ang mga pakete

Kamakailan-lamang na ang balita ay sinira iyon Natukoy ang isang kritikal na kahinaan sa ang imbakan ng pakete rubygems.org (ang kahinaan ay nakatala na sa ilalim ng CVE-2022-29176), na Binibigyang-daan nang walang tamang pahintulot, palitan ang mga pakete ng ibang tao sa repositoryo sa pamamagitan ng pagkuha ng isang lehitimong pakete at pag-upload ng isa pang file na may parehong pangalan at numero ng bersyon sa lugar nito.

Nabanggit na ang kahinaan ay dahil sa isang bug sa "yank" action handler, na tinatrato ang bahagi ng pangalan pagkatapos ng gitling bilang ang pangalan ng platform, na naging posible upang simulan ang pag-alis ng mga panlabas na pakete na tumutugma sa bahagi ng pangalan hanggang sa karakter ng gitling.

Sa partikular sa controller code ng operasyon "yank", tawag nito 'find_by!(full_name: "#{rubygem.name}-#{slug}")' ay ginamit upang maghanap ng mga pakete, habang ang parameter na "slug" ay ipinasa sa may-ari ng package upang matukoy ang bersyon na aalisin.

Maaaring tinukoy ng may-ari ng package na "rails-html" ang "sanitizer-1.2.3" sa halip na ang bersyon na "1.2.3", na magiging sanhi ng paglalapat ng operasyon sa "rails-html-sanitizer-1.2.3" package ″ mula sa ibang tao. »

Isang security advisory para sa Rubygems.org ang nai-publish kahapon.

Ang advisory ay may kinalaman sa isang bug na nagpapahintulot sa isang malisyosong user na magmina ng ilang mga hiyas at mag-upload ng iba't ibang mga file na may parehong pangalan, numero ng bersyon, at ibang platform.

Tingnan natin nang mas malalim para makita kung ano ang mali habang dumadaan sa proseso ng pagkuha. Bilang isang dahilan, isipin natin ang isang senaryo kung saan lumikha tayo ng isang hiyas na tinatawag na "rails-html" na may layuning makakuha ng hindi awtorisadong pag-access sa malawakang ginagamit na hiyas na "rails-html-sanitizer".

Nabanggit na tatlong kondisyon ang dapat matugunan, upang matagumpay na samantalahin ang kahinaang ito:

  • Ang pag-atake ay maaari lamang isagawa sa mga packet na mayroong karakter ng gitling sa kanilang pangalan.
  • Ang isang umaatake ay dapat na makapaglagay ng gem pack na may bahagi ng pangalan hanggang sa karakter ng gitling. Halimbawa, kung laban sa package na "rails-html-sanitizer" ang pag-atake, dapat ilagay ng attacker ang sarili nilang package na "rails-html" sa repository.
  • Ang inatake na package ay dapat na ginawa sa nakalipas na 30 araw o hindi na-update sa loob ng 100 araw.

Ang problema ay kinilala ng isang security researcher bilang bahagi ng HackerOne bounty program upang mahanap ang mga isyu sa seguridad sa mga kilalang open source na proyekto.

Ang problema naayos sa RubyGems.org noong Mayo 5 at ayon sa mga developer, hindi pa natukoy ang mga bakas ng pagsasamantala ng kahinaan sa mga log sa nakalipas na 18 buwan. Kasabay nito, isang mababaw na pag-audit lamang ang naisagawa sa ngayon, at isang mas malalim na pag-audit ang pinaplano sa hinaharap.

Sa kasalukuyan, naniniwala kami na ang kahinaang ito ay hindi napagsasamantalahan.

Ang RubyGems.org ay nagpapadala ng email sa lahat ng may-ari ng gem kapag ang isang gem na bersyon ay inilabas o inalis. Hindi kami nakatanggap ng anumang mga email ng suporta mula sa mga may-ari ng gem na nagsasaad na ang kanilang hiyas ay mina nang walang pahintulot.

Ang isang pag-audit ng mga pagbabago sa hiyas sa nakalipas na 18 buwan ay walang nakitang mga halimbawa ng malisyosong paggamit sa kahinaang ito. Ang karagdagang pag-audit para sa anumang posibleng paggamit ng pagsasamantalang ito ay walang nakitang pagkakataon ng pagsasamantalang ito na ginamit upang kunin ang isang hiyas nang walang pahintulot sa kasaysayan ng RubyGems. Hindi namin magagarantiya na hindi ito nangyari, ngunit mukhang hindi ito malamang.

Upang i-verify ang iyong mga proyekto, inirerekumenda na suriin ang kasaysayan ng mga operasyon sa Gemfile.lock file Ang nakakahamak na aktibidad ay ipinahayag sa pagkakaroon ng mga pagbabago na may parehong pangalan at bersyon, o isang pagbabago sa platform (halimbawa, kapag ang isang package xxx-1.2.3 Ang 1.2.3 ay ina-update sa xxx-XNUMX-xxx).

Bilang solusyon laban sa panggagaya ng mga nakatagong pakete sa patuloy na mga sistema ng pagsasama o kapag naglalathala ng mga proyekto, Inirerekomenda ang mga developer na gumamit ng Bundler na may mga opsyon na “–frozen” o “–deployment” upang kumpirmahin ang mga dependencies.

Sa wakas, kung interesado kang malaman ang tungkol dito, maaari mong suriin ang mga detalye sa sumusunod na link.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.