Недавно је објављено да је идентификована критична рањивост у репозиторијуму пакета RubyGems.org (рањивост је већ каталогизована под CVE-2022-29176), која омогућава , без одговарајућег овлашћења, замену туђих пакета у репозиторијуму покретањем повлачења (yank-а) легитимног пакета и отпремањем друге датотеке са истим именом и бројем верзије уместо ње.
Помиње се да је рањивост последица грешке у програму за обраду акције „yank“ , који третира део имена после цртице као име платформе, омогућавајући покретање уклањања екстерних пакета који се подударају у делу имена до цртице.
Конкретно, у коду обрађивача операције „yank“, позив „find_by!(full_name: "#{rubygem.name}-#{slug}")“ је коришћен за претрагу пакета, док је параметар „slug“ прослеђиван власнику пакета да би се одредила верзија коју треба уклонити.
Власник пакета „раилс-хтмл“ је могао да наведе „санитизер-1.2.3“ уместо верзије „1.2.3“, што би проузроковало да се операција примени на „раилс-хтмл-санитизер-1.2.3“ пакет ″ од неког другог. »
Безбедносни савет за Рубигемс.орг је објављен јуче.
Упозорење се односило на грешку која је дозволила злонамерном кориснику да ископа одређене драгуље и отпреми различите датотеке са истим именом, бројем верзије и различитом платформом.
Хајде да погледамо дубље да видимо шта је пошло наопако док смо пролазили кроз процес екстракције. Као изговор, замислимо сценарио где креирамо драгуљ под називом „раилс-хтмл” са намером да добијемо неовлашћени приступ широко коришћеном драгуљу „раилс-хтмл-санитизер”.
Наводи се да морају бити испуњена три услова да би се успешно искористила ова рањивост:
- Напад се може извршити само на пакете који имају цртицу у свом имену.
- Нападач треба да буде у могућности да постави пакет драгуља са делом имена све до знака цртице. На пример, ако је напад на пакет "раилс-хтмл-санитизер", нападач мора ставити сопствени пакет "раилс-хтмл" у спремиште.
- Нападнути пакет мора бити креиран у последњих 30 дана или није ажуриран 100 дана.
Проблем је идентификовао истраживач безбедности као део програма награђивања компаније HackerOne за проналажење безбедносних проблема у познатим пројектима отвореног кода.
Проблем је решен на RubyGems.org 5. маја , и према речима програмера, још увек нису идентификовали никакве трагове искоришћавања рањивости у логовима током протеклих 18 месеци. Међутим, до сада је спроведена само површна ревизија, а детаљнија ревизија је планирана за будућност.
Тренутно верујемо да ова рањивост није искоришћена.
РубиГемс.орг шаље е-пошту свим власницима драгуља када се верзија драгуља објави или уклони. Нисмо примили е-поруке за подршку од власника драгуља у којима се наводи да је њихов драгуљ ископан без овлашћења.
Ревизија промена драгуља у последњих 18 месеци није пронашла примере злонамерне употребе ове рањивости. Даљњом ревизијом за било какву могућу употребу овог експлоатације није пронађен ниједан пример да је овај експлоат коришћен за преузимање драгуља без овлашћења у историји РубиГемса. Не можемо гарантовати да се то никада није догодило, али не изгледа вероватно.
Да бисте верификовали своје пројекте, препоручује се да анализирате историју операција у датотеци Гемфиле.лоцк Злонамерна активност се изражава у присуству промена са истим именом и верзијом, или промене платформе (на пример, када пакет ккк-1.2.3 1.2.3 је ажуриран на ккк-XNUMX-ккк).
Као решење против имитације скривених пакета у системима континуиране интеграције или приликом објављивања пројеката, програмерима се саветује да користе Bundler са опцијама „--frozen“ или „--deployment“ како би потврдили зависности.
Коначно, ако сте заинтересовани да сазнате више о овоме , детаље можете пронаћи на следећем линку.