В реестре RubyGems обнаружены сотни вредоносных пакетов с криптомайнером

information security

В середине июля 2026 года в официальном реестре Ruby-библиотек RubyGems были выявлены две серии вредоносных пакетов, предназначенных для скрытого майнинга криптовалюты. Первая, более сложная кампания, насчитывает 113 поддельных библиотек, опубликованных 13 июля, которые в сумме были загружены более 14 тысяч раз. Вторая, менее изощрённая, включает 23 пакета, опубликованных к 16 июля. Кроме того, обнаружен связанный аккаунт, содержащий 309 пакетов без вредоносной нагрузки - вероятно, тестовый полигон для будущих атак.

Описание

Все 113 пакетов первой кампании представляют собой троянизированные копии популярных Ruby-библиотек. Злоумышленник использовал единую схему наименования, комбинируя приставки (giga, nano, ultra, hyper, piko, super, mega, micro, mini, tiny) с качественными определениями (pure, sharp, smart, pro, safe, clean, fast, quick, lite, max) и окончаниями (kit, tool, mod, pkg, hub, lib, box, rb, sys, gem). В каждую из таких подделок встроена идентичная вредоносная вставка - программа-майнер криптовалюты Monero на основе открытого проекта XMRig. Майнер активируется не сразу: код задерживает запуск на пять часов после установки пакета, чтобы обойти автоматические песочницы, которые обычно анализируют поведение в течение короткого времени.

Как показало исследование, для закрепления в системе злоумышленник предусмотрел три механизма: добавление строки в файл конфигурации оболочки (~/.bashrc), установка задания в планировщик задач (crontab) и создание пользовательской службы в системе инициализации (systemd). После активации майнер пытается прочитать ключи SSH на заражённой машине и известные хосты, после чего распространяется на другие доступные серверы - так называемое боковое перемещение. Более того, вредоносная нагрузка способна заражать другие языковые экосистемы: она записывает вредоносные скрипты в файлы package.json (Node.js), setup.py (Python), .gemspec (Ruby), Dockerfile, а также устанавливает ловушки в систему контроля версий git и расширения для редактора кода VSCode.

Перед выполнением майнера код проверяет, не работает ли программа в изолированной среде: он ищет признаки виртуальных машин (VMware, VirtualBox, QEMU), контейнеров (файл /.dockerenv, записи в cgroup) и отладчиков. Если окружение считается подозрительным, майнер не запускается. При работе он следит за нагрузкой на процессор и приостанавливает добычу, если загрузка превышает половину доступных ядер. Все настройки майнера хранятся в зашифрованном виде: используется тройное шифрование (AES, RSA, ChaCha20), что затрудняет извлечение адреса кошелька и пулов для майнинга. Все 113 пакетов направляют вычислительные мощности на один и тот же кошелёк Monero через четыре майнинг-пула.

Вторая кампания, проводившаяся с другого аккаунта, оказалась проще. Злоумышленник сначала опубликовал 23 пакета-пустышки 12 июля - они были безвредны и имели описание "University research based on...". Через четыре дня, 16 июля, все эти пакеты были обновлены, и в них появилась вредоносная нагрузка. В отличие от первой кампании, код не был зашифрован - он представлял собой открытый скрипт на Ruby, который загружал майнер XMRig напрямую с GitHub, используя официальный API репозитория проекта, и запускал его встроенным методом exec(). Механизмы закрепления, бокового перемещения и проверки на виртуальные среды отсутствовали - майнер работал только во время выполнения команды. Настройки были жёстко прописаны в коде: единственный пул pool.supportxmr.com и стандартный порт.

Для маскировки второй злоумышленник использовал две стратегии именования. Первая повторяла схему приставок и определений из первой кампании. Вторая - тайпосквоттинг, то есть регистрация имён, похожих на известные популярные библиотеки, с заменой символов (буква "i" на цифру "1", "o" на "0", удвоение букв). Среди целей - такие распространённые пакеты, как minitest, rake, activesupport, addressable, json, aws-sdk-core, bundler и другие. Именно эти библиотеки ежедневно загружают миллионы разработчиков, поэтому поддельные версии могли оказаться в чужих проектах случайно или при использовании невнимательных команд установки.

Отдельное внимание привлёк третий аккаунт, связанный с обеими кампаниями. На нём с 5 по 14 июля были опубликованы 309 пакетов с такими же шаблонами наименований, но без вредоносного содержимого - их общее число загрузок составило почти 140 тысяч. На момент 15 июля все эти библиотеки оставались чистыми, однако их наличие свидетельствует о возможной подготовке к будущим атакам или тестировании механизмов публикации. Аккаунт до сих пор активен на платформе RubyGems.

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

Индикаторы компрометации

Domain Port Combination

  • de.monero.herominers.com:443
  • p2pool.io:443
  • pool.moneroocean.stream:443
  • pool.supportxmr.com:3333
  • pool.supportxmr.com:443

URL

  • api.github.com/repos/xmrig/xmrig/releases/latest
  • github.com/xmrig/xmrig/releases/download/v6.22.2/xmrig-6.22.2-linux-static-x64.tar.gz
  • raw.githubusercontent.com/xmrig/xmrig/v6.22.2/scripts/setup.sh
  • raw.githubusercontent.com/xmrig/xmrig/v6.22.2/xmrig-6.22.2-linux-static-x64.tar.gz
  • rubygems.org/gems/1-8n
  • rubygems.org/gems/activesuport
  • rubygems.org/gems/addresable
  • rubygems.org/gems/aws-eventstre4m
  • rubygems.org/gems/aws-partit1ons
  • rubygems.org/gems/aws-s1gv4
  • rubygems.org/gems/aws-sdk-c0re
  • rubygems.org/gems/bundelr
  • rubygems.org/gems/faradayy
  • rubygems.org/gems/giga-clean-box
  • rubygems.org/gems/giga-clean-kit
  • rubygems.org/gems/giga-clean-pkg
  • rubygems.org/gems/giga-clean-rb
  • rubygems.org/gems/giga-max-kit
  • rubygems.org/gems/giga-max-mod
  • rubygems.org/gems/giga-pure-kit
  • rubygems.org/gems/giga-quick-rb
  • rubygems.org/gems/giga-safe-hub
  • rubygems.org/gems/giga-sharp-tool
  • rubygems.org/gems/hyper-lite-tool
  • rubygems.org/gems/hyper-max-rb
  • rubygems.org/gems/hyper-pro-kit
  • rubygems.org/gems/hyper-quick-kit
  • rubygems.org/gems/hyper-safe-hub
  • rubygems.org/gems/hyper-safe-kit
  • rubygems.org/gems/hyper-sharp-box
  • rubygems.org/gems/hyper-sharp-lib
  • rubygems.org/gems/hyper-smart-kit
  • rubygems.org/gems/jmesp4th
  • rubygems.org/gems/js0n
  • rubygems.org/gems/mega-clean-sys
  • rubygems.org/gems/mega-fast-sys
  • rubygems.org/gems/mega-lite-box
  • rubygems.org/gems/mega-lite-kit
  • rubygems.org/gems/mega-pro-box
  • rubygems.org/gems/mega-pro-kit
  • rubygems.org/gems/mega-pure-gem
  • rubygems.org/gems/mega-pure-tool
  • rubygems.org/gems/mega-quick-rb
  • rubygems.org/gems/mega-safe-hub
  • rubygems.org/gems/mega-safe-pkg
  • rubygems.org/gems/mega-sharp-hub
  • rubygems.org/gems/mega-smart-pkg
  • rubygems.org/gems/mega-smart-sys
  • rubygems.org/gems/mega-smart-tool
  • rubygems.org/gems/micro-clean-gem
  • rubygems.org/gems/micro-fast-hub
  • rubygems.org/gems/micro-fast-mod
  • rubygems.org/gems/micro-lite-pkg
  • rubygems.org/gems/micro-max-hub
  • rubygems.org/gems/micro-max-mod
  • rubygems.org/gems/micro-max-rb
  • rubygems.org/gems/micro-pro-box
  • rubygems.org/gems/micro-pure-kit
  • rubygems.org/gems/micro-quick-box
  • rubygems.org/gems/micro-safe-tool
  • rubygems.org/gems/micro-sharp-kit
  • rubygems.org/gems/micro-sharp-mod
  • rubygems.org/gems/mini-clean-sys
  • rubygems.org/gems/mini-fast-lib
  • rubygems.org/gems/mini-lite-rb
  • rubygems.org/gems/mini-max-gem
  • rubygems.org/gems/mini-pure-lib
  • rubygems.org/gems/mini-pure-tool
  • rubygems.org/gems/mini-quick-pkg
  • rubygems.org/gems/mini-safe-gem
  • rubygems.org/gems/mini-safe-lib
  • rubygems.org/gems/mini-safe-mod
  • rubygems.org/gems/mini-sharp-kit
  • rubygems.org/gems/mini-sharp-lib
  • rubygems.org/gems/minitestt
  • rubygems.org/gems/nano-clean-sys
  • rubygems.org/gems/nano-fast-lib
  • rubygems.org/gems/nano-max-box
  • rubygems.org/gems/nano-max-mod
  • rubygems.org/gems/nano-pure-tool
  • rubygems.org/gems/nano-quick-box
  • rubygems.org/gems/nano-quick-mod
  • rubygems.org/gems/nano-quick-tool
  • rubygems.org/gems/nano-safe-sys
  • rubygems.org/gems/nano-sharp-kit
  • rubygems.org/gems/nano-smart-box
  • rubygems.org/gems/nano-smart-gem
  • rubygems.org/gems/nano-smart-pkg
  • rubygems.org/gems/piko-clean-hub
  • rubygems.org/gems/piko-clean-mod
  • rubygems.org/gems/piko-fast-box
  • rubygems.org/gems/piko-fast-gem
  • rubygems.org/gems/piko-fast-rb
  • rubygems.org/gems/piko-lite-gem
  • rubygems.org/gems/piko-lite-mod
  • rubygems.org/gems/piko-max-box
  • rubygems.org/gems/piko-max-gem
  • rubygems.org/gems/piko-max-tool
  • rubygems.org/gems/piko-sharp-box
  • rubygems.org/gems/piko-sharp-sys
  • rubygems.org/gems/piko-smart-pkg
  • rubygems.org/gems/piko-smart-sys
  • rubygems.org/gems/public_suff1x
  • rubygems.org/gems/rac
  • rubygems.org/gems/rakee
  • rubygems.org/gems/rspec-c0re
  • rubygems.org/gems/super-lite-hub
  • rubygems.org/gems/super-pro-hub
  • rubygems.org/gems/super-pure-rb
  • rubygems.org/gems/super-quick-gem
  • rubygems.org/gems/super-quick-sys
  • rubygems.org/gems/super-sharp-lib
  • rubygems.org/gems/super-sharp-sys
  • rubygems.org/gems/tiny-max-box
  • rubygems.org/gems/tiny-max-gem
  • rubygems.org/gems/tiny-pro-lib
  • rubygems.org/gems/tiny-pro-rb
  • rubygems.org/gems/tiny-pro-sys
  • rubygems.org/gems/tiny-pure-box
  • rubygems.org/gems/tiny-quick-box
  • rubygems.org/gems/tiny-safe-sys
  • rubygems.org/gems/tiny-sharp-pkg
  • rubygems.org/gems/tiny-smart-mod
  • rubygems.org/gems/tiny-smart-sys
  • rubygems.org/gems/tz1nfo
  • rubygems.org/gems/ultra-fast-hub
  • rubygems.org/gems/ultra-fast-rb
  • rubygems.org/gems/ultra-max-pkg
  • rubygems.org/gems/ultra-max-sys
  • rubygems.org/gems/ultra-pro-kit
  • rubygems.org/gems/ultra-pro-pkg
  • rubygems.org/gems/ultra-pro-tool
  • rubygems.org/gems/ultra-pure-hub
  • rubygems.org/gems/ultra-pure-mod
  • rubygems.org/gems/ultra-quick-hub
  • rubygems.org/gems/ultra-safe-box
  • rubygems.org/gems/ultra-sharp-kit
  • rubygems.org/gems/ultra-smart-hub
  • rubygems.org/gems/ultra-smart-pkg
  • rubygems.org/gems/ultra-smart-tool
  • rubygems.org/profiles/Andrey78
  • rubygems.org/profiles/monib110
  • rubygems.org/profiles/Prvaz12_mars

Email

  • cakoc614@gmail.com
  • jdvrie98@gmail.com
  • nsrtytyam687@gmail.com
Комментарии: 0