В популярном gem-пакете rest-client, насчитывающем в сумме 113 миллиона загрузок, выявлена подстановка вредоносного кода (CVE-2019-15224), который загружает исполняемые команды и отправляет информацию на внешний хост. Атака была произведена через компрометацию учётной записи разработчика rest-client в репозитории rubygems.org, после чего злоумышленники 13 и 14 августа опубликовали выпуски 1.6.10-1.6.13, включающие вредоносные изменения. До блокировки вредоносных версий их успели загрузить около тысячи пользователей (атакующие чтобы не привлекать внимание выпустили обновления старых версий).
Вредоносное изменение переопределяет метод "#authenticate" в классе Identity, после чего каждый вызов метода приводит к отправке переданного при попытке аутентификации email и пароля на хост злоумышленников. Таким образом осуществляется перехват параметров входа пользователей сервисов, использующих класс Identity и установивших уязвимую версию библиотеки rest-client, которая фигурирует в качестве зависимости во многих популярных Ruby-пакетах, включая ast (64 млн загрузок), oauth (32 млн), fastlane (18 млн) и kubeclient (3.7 млн).
Кроме того, в код добавлен бэкдор, позволяющий выполнить произвольный Ruby-код через функцию eval. Код передаётся через Cookie, заверенную ключом атакующего. Для информирования злоумышленников об установке вредоносного пакета на внешний хост отправляется URL системы жертвы и подборка сведений об окружении, таких как сохранённые пароли к СУБД и облачным службам. C использованием вышеотмеченного вредоносного кода зафиксированы попытки загрузки скриптов для майтинга криптовалюты.
После изучения вредоносного кода было выявлено, что аналогичные изменения присутствуют ещё в 10 пакетах в Ruby Gems, которые не были захвачены, а специально подготовлены злоумышленниками на базе других популярных библиотек с похожими именами, в которых тире было заменено на подчёркивание или наоборот (например, на базе cron-parser создан вредоносный пакет cron_parser, а на базе doge_coin вредоносный пакет doge-coin).
Проблемные пакеты:
Первый вредоносный пакет из данного списка был размещён 12 мая, но большая часть появилась в июле. В сумме указанные пакеты успели загрузить около 2500 раз.
• Source: https://github.com/rest-client/rest-client/issues/713
• Source: https://github.com/rubygems/rubygems.org/issues/2097
• Source: https://github.com/rubygems/rubygems.org/wiki/Gems-yanked-and-accounts-locked#19-aug-2019
Вредоносное изменение переопределяет метод "#authenticate" в классе Identity, после чего каждый вызов метода приводит к отправке переданного при попытке аутентификации email и пароля на хост злоумышленников. Таким образом осуществляется перехват параметров входа пользователей сервисов, использующих класс Identity и установивших уязвимую версию библиотеки rest-client, которая фигурирует в качестве зависимости во многих популярных Ruby-пакетах, включая ast (64 млн загрузок), oauth (32 млн), fastlane (18 млн) и kubeclient (3.7 млн).
Кроме того, в код добавлен бэкдор, позволяющий выполнить произвольный Ruby-код через функцию eval. Код передаётся через Cookie, заверенную ключом атакующего. Для информирования злоумышленников об установке вредоносного пакета на внешний хост отправляется URL системы жертвы и подборка сведений об окружении, таких как сохранённые пароли к СУБД и облачным службам. C использованием вышеотмеченного вредоносного кода зафиксированы попытки загрузки скриптов для майтинга криптовалюты.
После изучения вредоносного кода было выявлено, что аналогичные изменения присутствуют ещё в 10 пакетах в Ruby Gems, которые не были захвачены, а специально подготовлены злоумышленниками на базе других популярных библиотек с похожими именами, в которых тире было заменено на подчёркивание или наоборот (например, на базе cron-parser создан вредоносный пакет cron_parser, а на базе doge_coin вредоносный пакет doge-coin).
Проблемные пакеты:
coin_base: 4.2.2, 4.2.1
blockchain_wallet: 0.0.6, 0.0.7
awesome-bot: 1.18.0
doge-coin: 1.0.2
capistrano-colors: 0.5.5
bitcoin_vanity: 4.3.3
lita_coin: 0.0.3
coming-soon: 0.2.8
omniauth_amazon: 1.0.1
cron_parser: 1.0.12, 1.0.13, 0.1.4
Первый вредоносный пакет из данного списка был размещён 12 мая, но большая часть появилась в июле. В сумме указанные пакеты успели загрузить около 2500 раз.
• Source: https://github.com/rest-client/rest-client/issues/713
• Source: https://github.com/rubygems/rubygems.org/issues/2097
• Source: https://github.com/rubygems/rubygems.org/wiki/Gems-yanked-and-accounts-locked#19-aug-2019