16 поддельных RubyGems распространяли стилер StubMaker для Windows

Исследователи OpenSourceMalware обнаружили 16 typosquatting-пакетов в RubyGems, распространявших Windows-стилер StubMaker. Пакеты имитировали популярные Ruby-зависимости опечатками в названиях и похищали пароли браузеров, криптокошельки, seed-фразы и данные Telegram. На момент публикации все выявленные gems были удалены из реестра.
Как работала загрузка вредоносного кода
Кампанию 15 августа 2026 года выявили специалисты OpenSourceMalware. Среди опубликованных названий были ubnuler, ubnlder, ri18nr, reaker, rakier, orakw, joxn, ise18n, ioe18n, ie18u, iai8n, i1l8n, i18om, activesupmport, brumdler и brundlef.
Вредоносный сценарий использовал файл extconf.rb. Ruby автоматически запускает его при установке gem: обычно этот механизм настраивает сборку нативных расширений на C, C++ или Rust. В StubMaker хук скачивал из GitHub Releases загрузчик на Rust размером 22 МБ, а тот запускал встроенный стилер на Go под именем wincfg.
Пол Маккарти из OpenSourceMalware отметил, что установщик создавал видимость обычной сборки. Он генерировал Makefile с пустыми целями all, install и clean, а также заглушки для Unix и Windows, которые завершались успешно. Реальная загрузка и запуск полезной нагрузки происходили в установочном хуке.
Какие данные собирал стилер
Полезная нагрузка с DLL-файлом abe_payload.dll извлекала данные из браузеров на Chromium: Google Chrome, Microsoft Edge, Brave, Opera, Opera GX, Vivaldi, Yandex, Avast, AVG и CCleaner Browser. По описанию исследователей, она обходила механизм app-bound encryption, добавленный Google.
Стилер также собирал данные расширений, историю просмотра, номера платёжных карт, информацию о системе и публичный IP-адрес через api.ipify.org. Он искал криптокошельки и seed-фразы, извлекал данные Telegram Desktop, упаковывал результаты в защищённый паролем ZIP-архив и выгружал его в Gofile. Ссылку на архив отправляли оператору через незашифрованный HTTP-канал.
Повторное использование имён пакетов
Два пакета, brumdler и brundlef, использовали особенность RubyGems: после удаления всех версий gem его namespace может занять другой пользователь. Изначально эти пакеты публиковал аккаунт gemlewqqhu1, а затем их имена перешли к двум аккаунтам, связанным с кампанией.
Сооснователь OpenSourceMalware Дженн Гайл также указала на непроверяемое поле Author: его значение не обязано совпадать с владельцем пакета. Это позволяло назначать каждому gem разные имена авторов и создавать впечатление несвязанных публикаций. Схожие риски цепочки поставок проявлялись и в вредоносных npm-цепочках и доверии к пакетам, где вредоносные npm-цепочки использовали доверие к экосистеме пакетов.
Что проверить командам разработки
Компаниям стоит сверять названия новых зависимостей с официальными пакетами, закреплять версии в lock-файлах и отдельно проверять выполняемые при установке хуки. Для рабочих станций разработчиков особенно важно ограничить установку непроверенных зависимостей и контролировать обращения сборочных процессов к внешним ресурсам. Удаление пакета из реестра снижает риск новых установок, но не устраняет последствия на уже скомпрометированных устройствах.

