Отравленные пакеты Ruby и Go: угроза для CI‑пайплайнов
Исследователи безопасности выявили масштабную атаку на цепочки поставок программного обеспечения. Злоумышленники использовали «спящие» пакеты — внешне безобидные библиотеки, которые позже активируют вредоносную нагрузку. Цель атаки: кража учётных данных, вмешательство в GitHub Actions и закрепление в системе через SSH.
Кто стоит за атакой?
Активность связана с аккаунтом GitHub под названием BufferZoneCorp. Злоумышленники опубликовали репозитории с заражёнными Ruby‑гемами и модулями Go. На момент обнаружения вредоносные пакеты удалили из RubyGems, а модули Go заблокировали.
Как маскируются вредоносные пакеты?
Опасный код скрывается под видом популярных библиотек — это помогает обойти системы обнаружения и ввести разработчиков в заблуждение. Злоумышленники копируют названия известных модулей, чтобы повысить доверие к своим пакетам.
Какие пакеты были обнаружены?
Ruby‑гемы:
knot‑activesupport‑logger;
knot‑devise‑jwt‑helper;
knot‑rack‑session‑store;
knot‑rails‑assets‑pipeline;
knot‑rspec‑formatter‑json;
knot‑date‑utils‑rb («спящий» гем);
knot‑simple‑formatter («спящий» гем).
Модули Go:
github.com/BufferZoneCorp/go‑metrics‑sdk;
github.com/BufferZoneCorp/go‑weather‑sdk;
github.com/BufferZoneCorp/go‑retryablehttp;
github.com/BufferZoneCorp/go‑stdlib‑ext;
github.com/BufferZoneCorp/grpc‑client;
github.com/BufferZoneCorp/net‑helper;
github.com/BufferZoneCorp/config‑loader;
github.com/BufferZoneCorp/log‑core («спящий» модуль);
github.com/BufferZoneCorp/go‑envconfig («спящий» модуль).
Чем опасны Ruby‑гемы?
При установке эти пакеты автоматически крадут конфиденциальные данные:
Украденная информация отправляется на сервер злоумышленников через веб‑хук (Webhook.site).
Что делают модули Go?
Возможности этих вредоносных модулей шире — они:
вмешиваются в рабочие процессы GitHub Actions;
подменяют исполняемые файлы Go, создавая фальшивые «обёртки»;
крадут данные разработчиков;
добавляют жёстко закодированный SSH‑ключ в файл ~/.ssh/authorized_keys, чтобы получить удалённый доступ к заражённому хосту.
Как это работает:
Модуль запускается через функцию init().
Определяет переменные окружения GITHUB_ENV и GITHUB_PATH.
Устанавливает прокси‑настройки (HTTP_PROXY и HTTPS_PROXY).
Создаёт фальшивый исполняемый файл Go в кэше.
Добавляет путь к этому файлу в рабочий процесс — так «обёртка» запускается раньше оригинального бинарника.
Фальшивая «обёртка» перехватывает команды Go, но передаёт управление оригинальному файлу, чтобы не нарушить выполнение задач и остаться незамеченной.
Рекомендации для пользователей
Если вы устанавливали подозрительные пакеты, выполните следующие шаги:
Немедленно удалите вредоносные библиотеки из системы.
Проверьте, не было ли несанкционированного доступа к конфиденциальным файлам.
Просмотрите файл ~/.ssh/authorized_keys на предмет посторонних SSH‑ключей.
Смените все скомпрометированные учётные данные.
Проанализируйте сетевые журналы на предмет исходящего HTTPS‑трафика к подозрительным адресам — это поможет выявить утечку данных.