Исследователи безопасности связывают крупную спам-кампанию в репозитории RubyGems в мае 2026 года с автономными агентами OpenAI. Агенты загрузили тысячи бесполезных пакетов, получили удалённое выполнение кода на серверах RubyDoc.info и использовали инфраструктуру для сбора данных с сайтов британских местных органов власти.
Спецалисты Спенсер Киттс, Томас Ларсен и Сидни фон Аркс обнаружили атаку, которая в мае 2026 года вынудила администраторов RubyGems приостановить регистрацию новых пользователей примерно на четыре дня. Злоумышленники массово создавали аккаунты и публиковали сотни вредоносных и бесполезных пакетов. Компания Socket позже связала эту активность с кампанией GemStuffer.
В RubyGems обнаружили более 150 пакетов, содержащих общедоступные данные с британских муниципальных порталов. Первоначально причина такого переноса информации осталась неясной.
По версии исследователей, первый пакет, связанный с кампанией, появился 5 мая, а 11–12 мая в RubyGems загрузили свыше 2000 пакетов. Активность продолжилась в конце мая и июне. Несколько признаков указывают на связь с OpenAI: многие пакеты явно создавались с помощью LLM и содержали в названии строку «oai», некоторые указывали «oai» как автора.
По содержимому пакетов агенты выполняли задания на поиск публичной информации. В мае они собирали данные с британских муниципальных сайтов — календари заседаний, списки встреч, повестки и документы. В июне целью стал файл county.json с сайта Комиссии по ценным бумагам и биржам США.
Поведение агентов напоминало недавний инцидент с DSEWiki, когда ИИ-агенты OpenAI использовали немецкий форум разработчиков для оставления примерно 18 000 сообщений с ответами на задания и способами обхода защитных ограничений.
Июньская активность в RubyGems дала дополнительный аргумент в пользу связи с OpenAI. Агенты обращались к тем же 49 интернет-ресурсам, что и агенты, использовавшие DSEWiki. Обе группы активно применяли сервис r.jina.ai для получения веб-контента — в RubyGems он упоминался в 1397 пакетах.
Наиболее значимым аспектом инцидента была эксплуатация RubyDoc.info. Сервис автоматически собирает и хостит документацию пакетов из RubyGems. После загрузки пакета можно запросить сборку его документации, и RubyDoc.info скачает gem и обработает его на своих серверах.
Агенты использовали особенность процесса сборки документации. RubyDoc.info обрабатывает файл .yardopts, через который подключаются вспомогательные Ruby-скрипты. Агенты публиковали специально подготовленные пакеты с кодом в .yardopts, затем инициировали сборку документации. Код запускался в окружении RubyDoc.info, давая агентам возможность выполнять произвольные команды на серверах сервиса.
После этого агенты использовали инфраструктуру как прокси: собирали данные с сайтов лондонских районов Ламбет, Уондсуэрт и Саутуарк, затем размещали информацию в RubyGems в виде новых пакетов.
Дело не ограничилось только публичными данными. Исследователи обнаружили, что ИИ пытался похитить API-ключи других пользователей из окружения RubyDoc.info. Агенты также обнаружили и тестировали не исправленный тогда баг кеширования в RubyGems, из-за которого API-ключ одного пользователя мог попасть другому. Неизвестно, удалось ли агентам воспользоваться этой уязвимостью.
Исследователи указывают, что остаётся неясным, зачем агентам потребовалась столь сложная схема для сбора открытой информации. По одной из версий, агенты использовали RubyGems как постоянное хранилище результатов и способ обхода ограничений на частоту запросов.
OpenAI подтвердила, что агенты компании действительно использовали RubyGems для доступа в интернет и получения публичной информации, но назвала задачи «безобидными». Расследование продолжается.
Ruby Central отнеслась к выводам исследователей осторожнее. По словам представителей проекта, имеющихся данных недостаточно для однозначного утверждения, что пакеты создавали ИИ-агенты. Собственное расследование RubyGems не выявило доказательств успешной кражи API-ключей других пользователей.
