Новости · Безопасность

SleeperGem: как в RubyGems через спящие аккаунты подсунули вредоносные пакеты

RubyGems — центральный реестр пакетов (гемов) для языка Ruby, откуда разработчики по всему миру ежедневно ставят библиотеки в свои проекты. 19–20 июля 2026 исследователи описали атаку на цепочку поставок этого реестра: злоумышленники опубликовали в нём три вредоносных гема, которые под видом обычных инструментов скачивали и запускали сторонний код прямо на машинах программистов.

Коротко: SleeperGem — атака на цепочку поставок RubyGems, о которой 19–20 июля 2026 сообщили исследователи Aikido Security и StepSecurity. Злоумышленники угнали два давно заброшенных аккаунта сопровождающих и опубликовали три вредоносных гема-загрузчика, скачивавших сторонний бинарник на машины разработчиков. Достаточно было установить пакет — проверьте систему и обновите зависимости.

21 июля 2026 Редакция LoadFile Чтение 6 мин
Коробки на конвейере, одна вскрыта и светится красным — метафора вредоносного пакета в цепочке поставок
Содержание
  1. Что произошло
  2. Как устроена атака
  3. Почему её было трудно заметить
  4. Кого это касается
  5. Что делать
  6. Источники

Что произошло

19 июля 2026 исследователь Charlie Eriksen из компании Aikido Security и команда StepSecurity раскрыли атаку на цепочку поставок реестра RubyGems, получившую имя SleeperGem. В реестре нашли три вредоносных гема, которые выдавали себя за легитимные инструменты разработчика, а на деле работали как загрузчики стороннего кода.

По данным исследователей, в атаке участвовали такие пакеты:

  • git_credential_manager (версии 2.8.0–2.8.3), опубликован 18 июля 2026 — основной дроппер, имитирующий менеджер учётных данных Git;
  • Dendreo (версии 1.1.3 и 1.1.4) — гем на аккаунте, зарегистрированном ещё в 2017 году;
  • fastlane-plugin-run_tests_firebase_testlab (версия 0.3.2) — плагин с 2018 года, у которого, по оценке Aikido, около 574 661 загрузки за всё время.

Ключевая особенность: два из трёх пакетов принадлежали давно заброшенным аккаунтам сопровождающих (в отчётах называются учётные записи LR-DEV и pinkroom), которые не проявляли активности шесть-семь лет. По оценке исследователей, это первый задокументированный случай, когда на RubyGems угнали сразу несколько «спящих» аккаунтов, чтобы протолкнуть обновления в давно доверенные, но забытые пакеты.

!
Опасность — в доверии к «старому» пакету

Гем, который годами лежал в реестре без изменений, воспринимается как безопасный. Атака SleeperGem использует именно это: вредоносным становится не новый подозрительный пакет, а свежая версия давно знакомого.

Как устроена атака

Каждый заражённый гем работал как загрузчик (loader). При установке или подключении пакета срабатывал код, который обращался к стороннему серверу и подтягивал вторую стадию. По описанию Aikido и StepSecurity, вредонос скачивал шелл-скрипт (deploy.sh) и нативный бинарник с публичного Forgejo-хоста git.disroot.org/git-ecosystem. На Windows запуск шёл через PowerShell, на Unix-системах — через обычный shell, причём перед загрузкой отключалась проверка SSL-сертификата.

Скачанный бинарник, по данным исследователей, уже помечен рядом антивирусных движков на VirusTotal как вредоносный. Закрепление в системе шло сразу несколькими способами: запись в cron, создание пользовательских служб systemd и подкладывание оболочки с флагом setuid-root по пути /usr/local/sbin/ping6. Сам управляющий демон разворачивался в каталоге ~/.local/share/gcm/.

Отдельно отмечают эскалацию в версии 2.8.2 гема git_credential_manager: там вредоносная нагрузка стала срабатывать автоматически при импорте библиотеки, а не только при явном вызове. Кроме того, дроппер прописывали в зависимости к нескольким другим пакетам, чтобы он «подтягивался» транзитивно.

i
Что такое гем и цепочка поставок

Гем (gem) — это упакованная Ruby-библиотека, по сути архив с кодом и метаданными, который ставится командой gem install или через Bundler. «Атака на цепочку поставок» означает, что вредонос попадает к жертве не напрямую, а через доверенный канал распространения — реестр пакетов.

Почему её было трудно заметить

SleeperGem целился именно в ноутбуки разработчиков, а не в серверы сборки. Перед запуском вредонос проверял более 30 переменных окружения, характерных для систем непрерывной интеграции — GitHub Actions, GitLab CI, CircleCI, Travis, Jenkins, Vercel. Если он видел, что запущен внутри CI/CD, то вёл себя тихо и нагрузку не разворачивал. Такая избирательность помогала обходить автоматические песочницы и антивирусные сканеры, которые обычно прогоняют пакеты именно в серверном окружении.

Второй маскирующий приём — «спящие» аккаунты. Обновление в давно не менявшемся, но легитимном пакете вызывает меньше подозрений, чем совершенно новый пакет от неизвестного автора. А использование публичного Forgejo-хоста для доставки нагрузки внешне выглядит как обычное обращение к git-репозиторию, а не к подозрительному командному серверу.

Тактика напоминает недавние истории с недоверенными пакетами в других экосистемах — например, критическую брешь в библиотеке node-tar в npm или адресные атаки на разработчиков через вредоносный код, спрятанный в SVG-картинках. Общий вывод один: реестр пакетов давно стал полноценным вектором атаки.

Кого это касается

Прямой риск — у разработчиков на Ruby и всех, кто мог установить перечисленные гемы или пакеты, тянущие их в зависимостях, в период с середины июля 2026. Особенно опасен сценарий, когда пакет попал на рабочую машину с сохранёнными токенами, SSH-ключами и доступами к репозиториям: именно такие данные и были целью.

Косвенно тема касается всех, кто работает с внешними пакетами и файлами из чужих источников. Ставя библиотеку из публичного реестра, вы фактически запускаете чужой код на своей машине — с теми же правами, что и вы сами. Это тот же класс проблем, что и открытие непроверенного вложения: безопасность файлов и загрузок начинается с недоверия к источнику.

!
Контекст: не первый инцидент с RubyGems в 2026 году

Ещё в мае 2026 реестр временно приостанавливал регистрацию новых аккаунтов после наплыва вредоносных пакетов. SleeperGem — продолжение той же волны атак на экосистему Ruby.

Что делать

  1. Проверьте свои зависимости и lock-файлы (Gemfile.lock) на упомянутые пакеты и версии: git_credential_manager 2.8.0–2.8.3, Dendreo 1.1.3–1.1.4, fastlane-plugin-run_tests_firebase_testlab 0.3.2. Если они есть — удалите их.
  2. Если пакет был установлен, считайте машину скомпрометированной: удалите демон из каталога ~/.local/share/gcm/, уберите механизмы закрепления (записи в cron, службы systemd, файл /usr/local/sbin/ping6).
  3. Ротируйте все учётные данные, которые могли оказаться на машине: токены доступа, пароли, SSH- и API-ключи. Это ключевой шаг — именно за ними охотится вредонос.
  4. Ставьте пакеты осознанно: сверяйте имя (атака часто строится на «тайпсквоттинге» и подмене знакомых названий), обращайте внимание на свежие версии давно молчавших пакетов и закрепляйте зависимости по версиям.

Разбор недоверенного кода и файлов из внешних реестров — тема шире одного инцидента. Как безопасно принимать, проверять и хранить файлы, разбираем в разделе безопасность файлов.

Источники

  • The Hacker News — «SleeperGem Uses Three Malicious RubyGems Packages to Target Developer Machines» (20 июля 2026) — thehackernews.com
  • Aikido Security — разбор атаки SleeperGem (Charlie Eriksen, 19 июля 2026) — aikido.dev
  • SC Media — «SleeperGem attack targets Ruby ecosystem with malicious gems» — scworld.com

Данные приведены на 21 июля 2026 по материалам Aikido Security, StepSecurity и профильных СМИ. Имена пакетов, версии и число загрузок указаны по первоисточникам; отдельные детали расследования могут уточняться.

Читайте также