Уязвимость в RubyGems.org, позволяющая подменить чужие пакеты

Автор Сообщение
news_bot ®

Стаж: 6 лет 2 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
09-Май-2022 11:31

В репозитории пакетов RubyGems.org выявлена критическая уязвимость (CVE-2022-29176), позволяющая без наличия должных полномочий подменить некоторые чужие пакеты в репозитории путём инициирования изъятия (yank) легитимного пакета и загрузки вместо него другого файла с тем же именем и номером версии.
Для успешной эксплуатации уязвимости необходимо выполнения трёх условий:
  • Атака может быть совершена только на пакеты, в имени которых используется символ тире.
  • Атакующий должен иметь возможность разместить gem-пакет с частью имени до символа тире. Например, если атака производится на пакет "rails-html-sanitizer", атакующий должен разместить в репозитории собственный пакет "rails-html".
  • Пакет, на который совершается атака, должен быть создан в последние 30 дней или не обновляться в течение 100 дней.
Уязвимость вызвана ошибкой в обработчике действия "yank", трактующего часть имени после тире как название платформы, что позволяло инициировать удаление чужих пакетов, совпадающих в части имени до символа тире. В частности, в коде обработчика операции "yank" для поиска пакетов использовался вызов 'find_by!(full_name: "#{rubygem.name}-#{slug}")', при том, что параметр "slug" передавался владельцем пакета для определения удаляемой версии. Владелец пакета "rails-html" вместо версии "1.2.3" мог указать "sanitizer-1.2.3", что привело бы к применению операции к чужому пакету "rails-html-sanitizer-1.2.3".
Проблема была выявлена исследователем безопасности в рамках действующей на HackerOne программы выплаты вознаграждений за поиск проблем с безопасностью в известных открытых проектах. Проблема устранена в RubyGems.org 5 мая и по заявлению разработчиков они пока не выявили следов эксплуатации уязвимости в логах за последние 18 месяцев. При этом пока проведён лишь поверхностный аудит и в дальнейшем планируется проведение более глубокой проверки.
Для проверки своих проектов рекомендуется проанализировать историю операций в файле Gemfile.lock, вредоносная активность выражается в наличии изменений с сохранением имени и версии или сменой платформы (например, когда пакт gemname-1.2.3 обновлён до gemname-1.2.3-java). В качестве обходного метода защиты от скрытой подмены пакетов в системах непрерывной интеграции или при публикации проектов разработчикам рекомендовано использовать Bundler с опциями "--frozen" или "--deployment" для фиксации зависимостей.
===========
Источник:
OpenNet.RU
===========

Похожие новости: Теги для поиска: #_rubygems
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 02-Май 12:03
Часовой пояс: UTC + 5