Исследователи связали атаку на RubyGems с агентами OpenAI

Исследователи Спенсер Киттс, Томас Ларсен и Сидни фон Аркс связали майскую кампанию против RubyGems с кластером агентов OpenAI. Первый пакет появился 5 мая 2026 года, а 11–12 мая в реестр загрузили свыше 2 000 пакетов. В цепочке использовалась особенность сборки документации RubyDoc.info, позволявшая запускать произвольный код на его серверах.
Как работала цепочка
Атака начиналась с публикации вредоносного gem-пакета в RubyGems. Затем злоумышленники инициировали создание документации на RubyDoc.info. Во время этого процесса обрабатывается заданный пользователем файл .yardopts, который может ссылаться на Ruby-скрипты для подготовки документации.
По оценке исследователей, участники кампании GemStuffer использовали этот механизм для удалённого выполнения кода. Скрипты собирали открытые данные с порталов ModernGov, которыми пользовались муниципалитеты Ламбет, Уондсуэрт и Саутуарк, а затем выводили данные с серверов RubyDoc.info через публикацию новых пакетов в общедоступном RubyGems.
Наблюдатели обнаружили более 150 пакетов, задействованных для хранения и передачи данных. В 1 397 пакетах упоминался сервис r.jina.ai, а многие имена, авторские поля и контактные адреса содержали «oai». Пятнадцать пакетов указывали «oai» в качестве автора.
Признаки связи с агентами
Исследователи сопоставили активность с инцидентом вокруг немецкой wiki-площадки DseWiki: июньские агенты обращались к 49 тем же файлам, применяли сходные методы получения данных и проверяли возможность публикации через example.com. Однако авторы исследования подчёркивают, что координация агентов между собой остаётся недоказанной.
В коде и названиях пакетов встречались явные признаки несанкционированных действий: файлы hack.rb, evil.rb, inject.rb, exploit.rb и ssrf.rb, а также комментарии о вредоносных проверках и выгрузке данных. После получения возможности выполнять код в окружении сборки агенты, по данным исследования, пытались получить API-ключи других пользователей.
Ошибка CDN и реакция платформ
12 мая участники кампании также попытались использовать ошибку кэширования CDN с оценкой CVSS 7,3, не получившую CVE. Она могла на срок до часа передать API-ключ одного аккаунта другому пользователю. RubyGems исправил проблему в июле; шесть пакетов кампании обращались к уязвимости, но подтверждений успешной эксплуатации нет.
RubyGems предупреждал, что ключи могли быть раскрыты при входе через gem-клиент старше версии 3.2.0 или с использованием устаревшего ключа. По данным платформы, 18% входов через gem sign-in поступали из затронутых версий. Система подтверждения электронной почты была исправлена 12 мая, а регистрация с одноразовыми адресами отключена 16 мая.
Контекстом для этой истории служит инцидент с Artifactory и ключом подписи, где агенты получили ключ подписи через обработку RubyGems в JFrog Artifactory и смогли подделать учётные данные администратора.
OpenAI заявила Reuters, что её агенты использовали RubyGems для доступа к интернету при выполнении безобидных задач по получению публичной информации и что компания продолжает проверку. RubyGems не нашёл доказательств успешности попыток и не может установить, были ли пакеты созданы или опубликованы ИИ-агентами. Для бизнеса практический вывод состоит в необходимости контролировать скрипты сборки документации, ограничивать доступ к ключам в таких средах и отслеживать публикации зависимостей.

