Во время кампании под названием wfx‑loot хакеры атаковали более 61 тыс. репозиториев GitHub для кражи секретов GitHub Actions и учётных данных облачных сервисов при помощи вредоносных рабочих процессов. Хотя вредоносный код сработал не во всех репозиториях, исследователи подтвердили кражу секретов более чем у 1,8 тыс. целей.

Злоумышленники использовали тысячи взломанных аккаунтов GitHub для создания запросов на слияния в репозиториях, к которым эти учётные записи имели доступ. Так хакеры проверяли, достаточно ли у этих аккаунтам прав на запись, чтобы внедрить вредоносный код.
Некоторые из взломанных аккаунтов принадлежали организациям из списка Fortune 100, Управлению общих служб США, правительству Франции, Nextcloud и WebdriverIO.
Исследователи из компании в сфере безопасности приложений Aikido предположили, что около 50 из этих аккаунтов имели права на публикацию пакетов в других экосистемах открытого программного обеспечения и пакетных репозиториях, включая npm, PyPI, Go, crates и Packagist.
Aikido утверждает, что wfx‑loot началась 10 ноября 2026 года. Злоумышленники использовали учётные данные более 4,8 тыс. взломанных аккаунтов GitHub, чтобы проверить, есть ли у них права на запись в 61,7 тыс. репозиториях. Хакеры создали запросы на слияние под названием docs: dependency audit notes, замаскированные под заметки по аудиту зависимостей. Около 92% таких запросов на слияние остаются открытыми, поэтому, вероятно, законные владельцы репозиториев не заметили этой активности.

Затем злоумышленники создали shell‑скрипт для кражи учётных данных, состоящий из 1,5 тыс. строк. Для этого они изменяли существующие рабочие процессы GitHub Actions, добавляли новые в недавно созданных временных ветках и внедряли хуки, срабатывающие при установке npm‑пакетов.
Скрипт пытается собрать следующие данные:
Данные GitHub Actions и переменные, GITHUB_TOKEN рабочего процесса, токены OIDC и токены среды выполнения GitHub Actions
Учётные данные для облачных сервисов AWS, Azure и Google Cloud, включая полученные через метаданные экземпляров на self‑hosted раннерах
Учётные данные разработчика и специалиста по инфраструктуре, полученные с помощью Git, SSH, GPG, Docker, Kubernetes, npm, PyPI, Vault и Terraform
Учётные данные для доступа к сервисам искусственного интеллекта и инструментам разработчиков OpenAI, Anthropic, Gemini, Hugging Face, Cursor и GitHub Copilot
Переменные окружения, файлы.env, закрытые ключи, хранилища ключей, история командной оболочки, память процессов, файлы репозиториев и последние коммиты, а также артефакты рабочего процесса.
Скрипт также поддерживает повышение привилегий в облачной инфраструктуре путём обмена токенов GitHub OIDC на токены доступа к временным облачным сессиям AWS, Azure и GCP. В AWS скрипт может использовать обнаруженные в репозитории роли IAM, чтобы получить доступ к дополнительным ролям и «создать долгосрочные учётные данные для пользователей IAM». В GCP скрипт использует собранные учётные данные сервисных аккаунтов, чтобы выдавать себя за другие аккаунты.
Исследователи отмечают, что возможности скрипта включают закрепление в скомпрометированных системах за счёт создания долгосрочных учётных данных или изменения политик облачной идентификации и доверия, если имеющиеся права это позволяют.
Скрипт сжал собранные данные в архивы tar и отправил их по протоколу HTTP POST на одну из двух контролируемых злоумышленниками конечных точек. На заключительном этапе хакеры быстро отменили внесение изменений и удалили записи рабочих процессов и журналы. По данным Aikido, это было сделано менее чем за минуту.

В исследовательской компании обнаружили определённые совпадения с кампанией GhostAction от 2025 года. Владельцам репозиториев рекомендовали проверить ветку wfx‑docs, запрос на слияние probe и пробелы в номерах выполнения рабочих процессов. В случае подтверждения выполнения полезной нагрузки все секреты и облачные роли, доступные для затронутых рабочих процессов, следует считать скомпрометированными и немедленно заменить.
