Они обнаружили уязвимость в RubyGems.org, которая позволяла подменять пакеты

Недавно стало известно, что Критическая уязвимость была обнаружена в репозиторий пакетов rubygems.org (уязвимость уже внесена в каталог под CVE-2022-29176), что позволять без надлежащего разрешения, заменить чужие пакеты в репозиторий, скопировав законный пакет и загрузив на его место другой файл с тем же именем и номером версии.

Упоминается, что уязвимость связана с ошибкой в ​​обработчике действия "yank", который интерпретирует часть имени после дефиса как имя платформы, что позволило инициировать удаление внешних пакетов, совпадающих с частью имени до символа дефиса.

В частности, в коде контроллера операции "дергать", вызов 'find_by!(full_name: "#{rubygem.name}-#{slug}")' использовался для поиска пакетов, а параметр «slug» передавался владельцу пакета для определения удаляемой версии.

Владелец пакета «rails-html» мог указать «sanitizer-1.2.3» вместо версии «1.2.3», в результате чего операция применялась бы к «rails-html-sanitizer-1.2.3». пакет ″ от кого-то другого. »

Вчера были опубликованы рекомендации по безопасности для Rubygems.org.

Информационное сообщение касалось ошибки, которая позволяла злоумышленнику добывать определенные драгоценные камни и загружать разные файлы с одинаковым именем, номером версии и другой платформой.

Давайте посмотрим глубже, чтобы увидеть, что пошло не так во время процесса извлечения. В качестве предлога давайте представим сценарий, в котором мы создаем гем под названием «rails-html» с намерением получить несанкционированный доступ к широко используемому гему «rails-html-sanitizer».

Упоминается, что должны быть соблюдены три условия, чтобы успешно использовать эту уязвимость:

  • Атака может быть выполнена только для пакетов, в имени которых есть символ дефиса.
  • Злоумышленник должен иметь возможность поместить пакет драгоценных камней с частью имени до символа дефиса. Например, если атака направлена ​​против пакета «rails-html-sanitizer», злоумышленник должен поместить в репозиторий свой собственный пакет «rails-html».
  • Атакуемый пакет должен быть создан в течение последних 30 дней или не обновляться в течение 100 дней.

Проблема был идентифицирован исследователем безопасности в рамках программы вознаграждений HackerOne за поиск проблем безопасности в известных проектах с открытым исходным кодом.

Проблема исправлено на RubyGems.org 5 мая и, по словам разработчиков, пока не выявлены следы эксплуатации уязвимостей в логах за последние 18 месяцев. В то же время пока проведен только поверхностный аудит, в будущем планируется более глубокий аудит.

В настоящее время мы считаем, что эта уязвимость не использовалась.

RubyGems.org отправляет электронное письмо всем владельцам гема, когда версия гема выпущена или удалена. Мы не получали писем поддержки от владельцев драгоценных камней, в которых говорилось бы, что их драгоценный камень был добыт без разрешения.

Аудит изменений гема за последние 18 месяцев не выявил примеров злонамеренного использования этой уязвимости. Дальнейший аудит любого возможного использования этого эксплойта не обнаружил ни одного случая использования этого эксплойта для захвата драгоценного камня без разрешения в истории RubyGems. Мы не можем гарантировать, что этого никогда не было, но это маловероятно.

Для проверки ваших проектов рекомендуется проанализировать историю операций в файле Gemfile.lock Вредоносная активность выражается в наличии изменений с таким же названием и версией, либо смене платформы (например, при установке пакета xxx-1.2.3 .1.2.3 обновляется до xxx-XNUMX-xxx).

Как решение против подмены скрытых пакетов в системах непрерывной интеграции или при публикации проектов, Разработчикам рекомендуется использовать Bundler с опциями «—frozen» или «—deployment» для подтверждения зависимостей.

Наконец, если вам интересно узнать об этом больше, вы можете проверить подробности в по следующей ссылке.


Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.