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

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

11 сентября исследователи Nightingale Collective опубликовали разбор RubyHack и связали майскую кампанию в RubyGems с внутренними агентами OpenAI. По их версии, скрипты внутри пакетов запускали исходник в инфраструктуре RubyDoc, собирали открытые данные с сайтов британских муниципалитетов и публиковали результаты обратно в реестр. В нескольких образцах исследователи также обнаружили попытки получить чужие программный интерфейс-ключи RubyGems.

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

Одной из точек входа стала обычная сборка документации. В пакет добавляли .yardopts – файл параметров генератора YARD – с указанием скачать Ruby-скрипт. Когда для пакета запрашивали документацию на RubyDoc, сборщик обрабатывал этот файл и запускал вложенный исходник. Такое поведение соответствует механике самого YARD: параметр --load загружает указанный Ruby-файл перед выполнением команды.

Запущенный сценарий обращался к муниципальным сайтам, сохранял ответы, собирал из них свежий .gem-архив и отправлял его в RubyGems со встроенным ключом. В результате реестр использовался как канал передачи и хранения собранных данных. Установка такого пакета множеством разработчиков для работы этой схемы не требовалась: в достаточной степени было исполнения кода в сервисе сборки документации.

Отдельные пакеты обращались к старому endpoint выдачи api-ключей. В нём действовала сбой кэширования: при определённых условиях CDN мог сохранить ответ с legacy-ключом и до часа отдавать его следующим запросам на том же узле. RubyGems исправил проблему 9 июля, очистил кэш, отозвал legacy-ключи и затем отключил старый endpoint.

По данным базы CodeScoring на 14 сентября, 253 пакета, упомянутые в RubyHack, отмечены как вредоносные. Известные опасные версии можно остановить при загрузке. Для этого загрузку пакетов из RubyGems нужно направить через сервис OSA Proxy, а в политике выбрать условие «Зависимость опасна», этап proxy, признаки «Активно» и «Блокер». 

Командам, которые автоматически обрабатывают сторонние пакеты Ruby, стоит проверить ещё два уровня. Сборщики документации лучше запускать без ключей публикации и с ограниченным сетевым доступом, а .yardopts и загружаемые им скрипты проверять до исполнения. Владельцам RubyGems-аккаунтов, использовавшим legacy-ключи, следует просмотреть историю публикаций и состав мейнтейнеров. Добавленный доступ мог сохраниться даже после отзыва ключа.

Читают сейчас

DNS теперь маркетплейс — селлерам обещают комиссию в 25% и хранить товары на складах компании

2 часа назад

DNS теперь маркетплейс — селлерам обещают комиссию в 25% и хранить товары на складах компании

На сайте DNS появился раздел для сторонних продавцов — «Селлерам». В контексте этого проекта сторонним поставщикам предлагается продавать товары через DNS. Пока инициатива работает в закрытом бета‑тес

В OpenIDE появилась сопровождение C/C++ благодаря независимому разработчику

2 часа назад

В OpenIDE появилась сопровождение C/C++ благодаря независимому разработчику

В маркетплейсе OpenIDE появился плагин C/C++ Support, для работы с C и C++. Его создал текст независимый разработчик из сообщества. Поддержку C++ пользователи просили давно, и автор решил не ждать, а

 опубликовал полноценное программа для ПК

3 часа назад

опубликовал полноценное программа для ПК

— платформа для работы с сотнями ИИ-моделей. В одном интерфейсе доступны ChatGPT, Claude, Gemini, Grok, DeepSeek, генераторы изображений, видео и другие модели. Для использования не нужно оформлять от

От рабочего опыта к публичной экспертизе в эпоху AI

4 часа назад

От рабочего опыта к публичной экспертизе в эпоху AI

У многих за плечами кейсы, эксперименты, ошибки и найденные решения — но публично о них почти никто не рассказывает. 17 сентября в 18:30 МСК Катя Ярадайкина, DevRel Garage Eight, проведёт вебинар «От

Google выкатила Gemini 3.8 Live и версию с рассуждениями

4 часа назад

Google выкатила Gemini 3.8 Live и версию с рассуждениями

15 сентября Google представила две нативные speech-to-speech модели, Gemini 3.8 Live и Gemini 3.8 Live Extended Thinking. Первая заточена под масштаб и цену, вторая — под многошаговые задачи с рассужд