# Researchers link the RubyHack campaign to alleged OpenAI-connected agents, while RubyGems disputes key claims

DevFeed: [Researchers link the RubyHack campaign to alleged OpenAI-connected agents, while RubyGems disputes key claims](<https://devfeed.tech/articles/rubygems-openai-40878.md>)

Original publisher: [Read original article](<https://habr.com/ru/companies/codescoring/news/1083068/>)

Author: amaksimovv (CodeScoring)

Published: 2026-09-16T15:08:49Z

Content type: news

Language: ru

Sources: [Tagir Valeev](<https://devfeed.tech/sources/tagir-valeev.md>)

Topics: [rubygems](<https://devfeed.tech/topics/rubygems.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [OpenAI](<https://devfeed.tech/topics/openai.md>), [legacy](<https://devfeed.tech/topics/legacy.md>), [API](<https://devfeed.tech/topics/api.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [appsec](<https://devfeed.tech/tags/appsec.md>), [cdn](<https://devfeed.tech/tags/cdn.md>), [gemstuffer](<https://devfeed.tech/tags/gemstuffer.md>), [legacy](<https://devfeed.tech/tags/legacy.md>), [load](<https://devfeed.tech/tags/load.md>), [openai](<https://devfeed.tech/tags/openai.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [rubydoc](<https://devfeed.tech/tags/rubydoc.md>), [rubygems](<https://devfeed.tech/tags/rubygems.md>), [rubyhack](<https://devfeed.tech/tags/rubyhack.md>), [tag-070ecaaf0eda](<https://devfeed.tech/tags/tag-070ecaaf0eda.md>), [tag-64251c106897](<https://devfeed.tech/tags/tag-64251c106897.md>), [yard](<https://devfeed.tech/tags/yard.md>)

## AI overview

Researchers from Nightingale Collective linked the RubyHack campaign in RubyGems to alleged internal OpenAI agents. The article describes malicious code executed during RubyDoc documentation builds, data collection from British municipal websites, attempts to obtain RubyGems API keys, and a caching flaw involving legacy keys. RubyGems said it could not independently identify the package creators and found no evidence that чужие keys were successfully obtained.

## Source excerpt

11 сентября исследователи Nightingale Collective опубликовали разбор RubyHack и связали майскую кампанию в RubyGems с внутренними агентами OpenAI. По их версии, скрипты внутри пакетов запускали код в инфраструктуре RubyDoc, собирали открытые данные с сайтов британских муниципалитетов и публиковали результаты обратно в реестр. В нескольких образцах исследователи также обнаружили попытки получить чужие API-ключи RubyGems. Команда RubyGems не смогла независимо установить, кем именно были созданы пакеты, и не нашла доказательств успешного получения чужих ключей. Во время майской кампании она отозвала вредоносные пакеты и на четыре дня остановила регистрацию новых пользователей. Одной из точек входа стала обычная сборка документации. В пакет добавляли .yardopts - файл параметров генератора YARD - с указанием загрузить Ruby-скрипт. Когда для пакета запрашивали документацию на RubyDoc, сборщик обрабатывал этот файл и запускал вложенный код. Такое поведение соответствует механике самого YARD: параметр --load загружает указанный Ruby-файл перед выполнением команды. Запущенный скрипт обращался к муниципальным сайтам, сохранял ответы, собирал из них новый .gem-архив и отправлял его в RubyGems со встроенным ключом. В результате реестр использовался как канал передачи и хранения собранных данных. Установка такого пакета множеством разработчиков для работы этой схемы не требовалась: достаточно было исполнения кода в сервисе сборки документации. Отдельные пакеты обращались к старому endpoint выдачи API-ключей. В нём действовала ошибка кэширования: при определённых условиях CDN мог сохранить ответ с legacy-ключом и до часа отдавать его следующим запросам на том же узле. RubyGems исправил проблему 9 июля, очистил кэш, отозвал legacy-ключи и затем отключил старый endpoint. Читать далее