Vulnerability sa RubyGems.org na nagbibigay-daan sa panggagaya ng mga package ng ibang tao

Ang isang kritikal na kahinaan (CVE-2022-29176) ay natukoy sa imbakan ng pakete ng RubyGems.org, na nagbibigay-daan, nang walang wastong awtoridad, na palitan ang ilang mga pakete ng ibang tao sa imbakan sa pamamagitan ng pagsisimula ng paghatak ng isang lehitimong pakete at pag-load sa lugar nito isa pang file na may parehong pangalan at numero ng bersyon.

Upang matagumpay na samantalahin ang kahinaan, tatlong kundisyon ang dapat matugunan:

  • Ang pag-atake ay maaari lamang isagawa sa mga packet na may gitling sa kanilang pangalan.
  • Ang isang attacker ay dapat na makapaglagay ng gem package na may bahagi ng pangalan bago ang character na gitling. Halimbawa, kung ang pag-atake ay nasa package na "rails-html-sanitizer", dapat ilagay ng attacker ang sarili niyang package na "rails-html" sa repository.
  • Ang package na inaatake ay dapat na ginawa sa loob ng huling 30 araw o hindi na-update sa loob ng 100 araw.

Ang kahinaan ay sanhi ng isang error sa "yank" action handler, na binibigyang-kahulugan ang bahagi ng pangalan pagkatapos ng hyphen bilang pangalan ng platform, na naging posible upang simulan ang pagtanggal ng mga banyagang pakete na tumutugma sa bahagi ng pangalan bago ang gitling. Sa partikular, sa "yank" handler code, ang 'find_by!(full_name: "#{rubygem.name}-#{slug}")" na tawag ay ginamit upang maghanap ng mga package, habang ang "slug" na parameter ay ipinasa ng may-ari ng package upang matukoy ang bersyon na aalisin. Maaaring tukuyin ng may-ari ng package na "rails-html" ang "sanitizer-1.2.3" sa halip na ang bersyon na "1.2.3", na magiging dahilan upang mailapat ang operasyon sa package ng ibang tao na "rails-html-sanitizer-1.2.3 ".

Ang isyu ay tinukoy ng isang security researcher bilang bahagi ng bounty program ng HackerOne para sa paghahanap ng mga isyu sa seguridad sa mga kilalang open-source na proyekto. Naayos ang problema sa RubyGems.org noong Mayo 5 at ayon sa mga developer, hindi pa nila natukoy ang anumang bakas ng pagsasamantala sa kahinaan sa mga log sa nakalipas na 18 buwan. Kasabay nito, isang mababaw na pag-audit lamang ang naisasagawa sa ngayon at isang mas malalim na pag-audit ang pinaplano sa hinaharap.

Upang suriin ang iyong mga proyekto, inirerekumenda na pag-aralan ang kasaysayan ng mga operasyon sa Gemfile.lock file; ang nakakahamak na aktibidad ay ipinahayag sa pagkakaroon ng mga pagbabago sa pangalan at bersyon na pinapanatili o ang platform ay binago (halimbawa, kapag ang gemname- Ang 1.2.3 package ay na-update sa gemname-1.2.3-java). Bilang solusyon para maprotektahan laban sa nakatagong pagpapalit ng package sa tuluy-tuloy na integration system o kapag nagpa-publish ng mga proyekto, inirerekomenda ng mga developer na gamitin ang Bundler gamit ang mga opsyong β€œ--frozen” o β€œ--deployment” para ayusin ang mga dependency.

Pinagmulan: opennet.ru

Magdagdag ng komento