Ранливост во RubyGems.org што дозволува лажирање на туѓи пакети

Во складиштето на пакети RubyGems.org е идентификувана критична ранливост (CVE-2022-29176), која овозможува, без соодветно овластување, да се заменат некои туѓи пакети во складиштето со иницирање на легитимниот пакет и вчитување на негово место друга датотека со исто име и број на верзија.

За успешно искористување на ранливоста, мора да се исполнат три услови:

  • Нападот може да се изврши само на пакети кои имаат цртичка во нивното име.
  • Напаѓачот мора да може да постави пакет со скапоцен камен со дел од името пред знакот на цртичка. На пример, ако нападот е на пакетот "rails-html-sanitizer", напаѓачот мора да го стави својот сопствен пакет "rails-html" во складиштето.
  • Пакетот што е нападнат мора да е создаден во последните 30 дена или да не е ажуриран 100 дена.

Ранливоста е предизвикана од грешка во управувачот со акција „yank“, кој го толкува делот од името по цртичката како име на платформата, што овозможи да се иницира бришење на странски пакети што одговараат на делот од името пред цртичката. Конкретно, во кодот на управувачот „yank“, повикот „find_by!(full_name: „#{rubygem.name}-#{slug}“)“ се користеше за наоѓање пакети, додека параметарот „slug“ беше пренесен од страна на сопственикот на пакетот за да одреди верзијата што треба да се отстрани. Сопственикот на пакетот „rails-html“ може да наведе „sanitizer-1.2.3“ наместо верзијата „1.2.3“, што би предизвикало операцијата да се примени на туѓ пакет „rails-html-sanitizer-1.2.3 “.

Проблемот беше идентификуван од страна на истражувач за безбедност како дел од програмата за баунти на HackerOne за пронаоѓање безбедносни проблеми во познати проекти со отворен код. Проблемот беше поправен во RubyGems.org на 5 мај и според програмерите, тие сè уште не идентификувале никакви траги на искористување на ранливоста во дневниците во изминатите 18 месеци. Истовремено, досега е извршена само површна ревизија и во иднина се планира подлабока ревизија.

За да ги проверите вашите проекти, се препорачува да се анализира историјата на операциите во датотеката Gemfile.lock; злонамерната активност се изразува во присуство на промени со зачувување на името и верзијата или промена на платформата (на пример, кога името на скапоцениот камен -1.2.3 пакетот се ажурира на gemname-1.2.3-java). Како решение за заштита од замена на скриени пакети во системите за континуирана интеграција или при објавување проекти, на програмерите им се препорачува да го користат Bundler со опциите „-frozen“ или „-deployment“ за да ги поправат зависностите.

Извор: opennet.ru

Додадете коментар