Устранена уязвимость в RubyGems.org

2 апреля 2016 года стало известно о уязвимости, которая позволяет неавторизованным пользователям заменить существующие .gem файлы при определённых обстоятельствах. Исправление было опубликовано в этот же день. При дальнейшем рассмотрении был обнаружен похожий вектор атаки, исправление для которого было опубликовано уже 4 апреля. В обоих векторах атаки, атакующий мог использовать специальную комбинацию имени и версии гема, чтобы заменить существуюший .gem файл. Также известно, что .gem файлы загруженные с помощью этого метода не могут быть установлены через стандартную команду gem install. Первая часть этой уязвимости была введена 11 июня 2014, а вторая присутствовала с самого начала.

Все .gem файлы, у которых есть контрольная сумма sha256, были проверены и ни один из них не пострадал. Подсчёт контрольной суммы был введён 8 февраля 2015 года, таким образом файлы, загруженные до этой даты, не имеют контрольной суммы. Так или иначе, если .gem файл был скомпрометирован ранее, нет способа выяснить это.

Файлы с тире в имени (например «blank-blank») загруженные между 11 июня 2014 и 2 апреля 2016 были уязвимы. Файлы загруженные между 8 февраля 2015 и 2 апреля 2016 были уже проверены. Если у вас есть версия .gem файла, которая не была проверена, вы должны выполнить следующие действия:

  • Скачать ваш gem.
  • Запустить gem unpack file.gem.
  • Убедиться, что нет никаких неожиданных изменений.
  • Запустить gem spec file.gem.
  • Убедиться, что нет никаких неожиданных изменений в gemspec.

В случае, если gem был скомпрометирован, пожалуйста выполните gem yank для вашего файла, и сообщите об этом команде по обеспечению безопасности как можно скорее, и пожалуйста отправьте ваш .gem файл.

Особая благодарность Eric Chapweske за выявление уязвимости и подробный отчёт. David Radcliffe и Arthur Neves за работу на исправлениями и проверками. Aaron Patterson, Nick Quaranto, André Arko, и Samuel Giddins за ревью и проверку.

 ruby, rubygems, решето, уязвимость

©  Linux.org.ru