Атака за пределами GitHub: хакеры нацелились на 8000 репозиториев в поисках ключей OpenAI, Anthropic и облачных сервисов
Источник изображения: сгенерировано Muse
GitHub оказался в центре масштабной кампании по хищению учётных данных: с 10 по 12 ноября злоумышленники внедрили вредоносные коммиты в 8093 репозитория, используя 4833 скомпрометированных аккаунта. Атака была направлена не только на исходный код: в числе целей оказались секреты GitHub Actions, облачные учётные данные и API-ключи популярных ИИ-сервисов, в том числе OpenAI, Anthropic и Hugging Face.
Как сообщает Aikido Security, на первом этапе атакующие проверяли права украденных токенов GitHub. Для этого они создавали из ветки wfx-docs pull request — запрос на внесение изменений в чужой репозиторий — под названием «docs: dependency audit notes» и добавляли небольшой файл с заметками. Таким образом выяснялось, может ли захваченная учётная запись записывать изменения в проект. Исследователи выявили 61 879 таких запросов в 61 734 репозиториях: их создали от имени 4833 аккаунтов. На момент анализа около 91% запросов оставались открытыми. В 1343 репозиториях вредоносные коммиты публиковались от имени не владельцев проектов, а других пользователей, включая соавторов и ботов.
Убедившись в наличии доступа, злоумышленники внедряли код одним из трёх способов: создавали файл рабочего процесса GitHub Actions в пустом репозитории, изменяли действующие сценарии автоматической сборки или добавляли скрипт в механизм postinstall пакета npm, который срабатывает при установке. Из 8093 затронутых репозиториев в 7309 были изменены существующие сценарии CI, в 16 добавлены новые рабочие процессы, а ещё в 771 внедрён вредоносный установочный скрипт. Последний способ особенно опасен: код мог запускаться не только на сервере, но и на компьютере разработчика при установке заражённого пакета.
Главным инструментом атаки стал shell-скрипт примерно из 1500 строк. Он собирает секреты репозитория и переменные GitHub Actions, токены доступа, API-ключи, конфигурации облачных сервисов, SSH-ключи, историю команд терминала, файлы окружения и настройки инструментов искусственного интеллекта. Кроме того, скрипт исследует память процессов и переменные окружения в поисках учётных данных GitHub, AWS и других платформ. Похищенная информация отправляется на удалённые серверы или в Telegram.
Возможности вредоносной программы не ограничиваются кражей существующих паролей. Она также пытается проникнуть в облачную инфраструктуру с помощью OpenID Connect (OIDC) — протокола, позволяющего сервисам подтверждать личность без передачи обычного пароля. В 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 не позволяет проверить закрытые проекты и другие ветки. Поэтому реальное число затронутых проектов может быть больше.
Источник: iXBT
Vivo X300 Ultra получил OriginOS 7: камеру улучшили, а автономность увеличили
Данные 46 тысяч сотрудников TSMC продают за 3 биткоина
Сбой Claude связали с аварией Microsoft 365: Anthropic восстановила работу сервиса ИИ
Масштабный сбой Microsoft лишил миллионы пользователей доступа к Outlook и парализовал железнодорожное сообщение в ряде стран
Qwen и локальные нейросети на Mac mini: зачем это нужно?
Как я ремонтировал роутер Starlink в Испании
OpenAI получила рекордные $10 млрд за квартал, но по-прежнему теряет $11 млрд