Хакеры атаковали 8093 репозитория на GitHub для кражи ключей OpenAI, Anthropic и облачных доступов

С 10 по 12 ноября злоумышленники разместили вредоносные коммиты в 8093 репозиториях на GitHub, используя 4833 скомпрометированных аккаунта. Целью атаки стали секреты GitHub Actions, облачные учётные данные и ключи API популярных ИИ-сервисов, включая OpenAI, Anthropic и Hugging Face. Об этом сообщает IXBT News.
По данным Aikido Security, сначала злоумышленники проверяли возможности украденных токенов GitHub. Они открывали pull request с названием «docs: dependency audit notes» и ветки wfx-docs, добавляя небольшой файл с заметками. Так проверялось, позволяет ли украденная учётная запись записывать изменения в чужой проект. Всего обнаружено 61 879 таких запросов в 61 734 репозиториях, созданных от имени 4833 аккаунтов. Около 91% pull request на момент анализа оставались открытыми. В 1343 репозиториях вредоносные коммиты публиковались от имени пользователей, отличных от владельцев проектов, включая соавторов и ботов.
«После проверки доступа атакующие внедряли вредоносный код одним из 3 способов: добавляли новый файл рабочего процесса GitHub Actions в пустой репозиторий, изменяли уже существующие сценарии автоматической сборки или помещали скрипт в механизм postinstall пакета npm, который запускается при установке. Из 8093 затронутых репозиториев 7309 получили изменения существующих сценариев CI, 16 — новые рабочие процессы, ещё 771 — вредоносный установочный сценарий», — пишет IXBT News.
Последний вариант опасен тем, что код мог выполняться не только на сервере, но и на компьютере разработчика при установке заражённого пакета. Основной инструмент атаки — shell-скрипт объёмом около 1500 строк. Он собирает секреты репозитория и переменные GitHub Actions, токены доступа, ключи API, конфигурации облачных сервисов, SSH-ключи, историю команд терминала, файлы окружения и конфигурации инструментов искусственного интеллекта. Отдельно скрипт проверяет память процессов и переменные окружения, пытаясь найти учётные данные от GitHub, AWS и других платформ. Собранную информацию отправляют на удалённые серверы или в Telegram.
Скрипт также пытается получить доступ к облачной инфраструктуре через механизмы OpenID Connect. В AWS он создаёт новые ключи доступа и меняет политики доверия ролей. В Azure добавляет учётные данные в регистрации приложений Microsoft Entra ID, позволяя рабочим процессам GitHub авторизоваться от имени этих приложений даже после смены клиентских секретов. В коде предусмотрены попытки доступа к Google Cloud, HashiCorp Vault и Kubernetes.
Особенность кампании — тщательная зачистка следов. После выполнения вредоносного сценария злоумышленники возвращают репозиторий в прежнее состояние, удаляя заражённые изменения. В одном из задокументированных случаев вредоносный файл появился в 14:01 UTC, а исчез уже в 14:05. В проектах redock заражённые коммиты откатывались примерно через 50 секунд. Поэтому проверка текущего состояния репозитория не гарантирует, что он не участвовал в атаке.
Кампания затронула и распространение программного обеспечения за пределами GitHub. Вредоносный код обнаружен в версии v3.14.3 PHP-пакета neuronai-studio в Packagist, а также в версиях v1.0.278, v1.0.280 и v1.0.282 Go-модуля redock. Ещё один Go-модуль gocurl получил вредоносный коммит, который теперь кэшируется прокси-сервером Go. Кроме того, вредоносные изменения обнаружили в 28 репозиториях WebdriverIO, где они публиковались от имени бота wdio-bot. При этом не все заражённые версии автоматически запускали вредоносный код при обычной установке: например, в случае gocurl для запуска требовалось создание определённого тега версии, а заражённый сценарий redock выполнялся только при изменениях ветки beta.
По оценке авторов расследования, кампания продолжалась на момент проведения анализа. При этом обнаруженные цифры относятся только к публичным репозиториям и их основным веткам: закрытые проекты и другие ветки GitHub Search не охватывает. Поэтому фактическое число затронутых проектов может быть выше.
Подписывайтесь на наш Telegram-канал, чтобы быть в курсе всех новостей и событий Рунета.