
Исследователи компании Aikido, занимающейся безопасностью кода, описали масштабную атаку на GitHub: с помощью 4837 взломанных аккаунтов злоумышленники открыли pull request'ы в 61 764 репозиториях, и как минимум в 1835 из них вредоносный код выполнился и отправил наружу ключи и учетные данные.
Атака построена на штатных функциях GitHub. Разработчики предлагают изменения в чужие репозитории через pull request, а сервис GitHub Actions позволяет автоматически выполнять задачи по описанным в файлах сценариям - workflow. Таким сценариям для работы часто нужен доступ к секретам проекта: токенам, ключам облачных сервисов и т.п. Именно на это злоумышленники и рассчитывали.
Как проходила атака
Сначала шла разведка. Со взломанных аккаунтов массово открывались pull request'ы с заголовком «docs: dependency audit notes» из веток с названием wfx-docs. Это были не сами атаки, а пробы: так злоумышленники выясняли, какие проекты они могут изменять. Каким образом были получены сами аккаунты, Aikido не сообщает.
Из 60 с лишним тысяч таких pull request'ов более 10 тысяч пришлись на репозитории, которые взломанным аккаунтам не принадлежали, но к которым у них был доступ.
Получив права на запись, злоумышленники внедряли вредоносный скрипт одним из трех способов: меняли существующий workflow в GitHub Actions, добавляли shell-скрипт, который запускается хуком при установке npm-пакета, или создавали новый файл workflow во временной ветке.
Aikido отслеживает кампанию под названием wfx-loot - так сами злоумышленники называли свою программу и украденные секреты.
Что крали
Во всех трех вариантах использовалась одна и та же нагрузка - около 1500 строк кода. Она искала в окружении:
секреты GitHub Actions и токены аутентификации;
учетные данные AWS, Azure и Google Cloud;
конфигурации Docker и Kubernetes, SSH-ключи;
API-ключи ИИ-сервисов, например OpenAI и Anthropic;
историю командной оболочки разработчиков;
файлы .env, приватные ключи и учетные данные npm, PyPI, HashiCorp Vault и Terraform.
Этим вредонос не ограничивался. Он пытался расширить доступ: обменивал украденные токены на облачные сессии, выдавал себя за сервисные аккаунты и даже создавал новые учетные данные. Кроме того, он менял настройки AWS и Azure, чтобы сохранить доступ, даже если жертва сменит скомпрометированные ключи.
Следы злоумышленники заметали быстро: после кражи откатывали свои изменения и удаляли журналы выполнения workflow, иногда меньше чем через минуту.
Атака задела и цепочку поставок ПО: Aikido нашла скомпрометированные PHP-пакеты в Packagist и две затронутые версии модулей Go. По мнению исследователей, это, возможно, побочный эффект злоупотребления автоматической публикацией пакетов, а не отдельная цель.
Aikido советует всем, в чьих репозиториях выполнилась вредоносная нагрузка, считать скомпрометированными все секреты и облачные учетные данные, к которым есть доступ у их workflow, и срочно их заменить.
Удобство автоматизации здесь обернулось против пользователей: чем больше прав у сценариев CI, тем ценнее каждый взломанный аккаунт с доступом на запись.
Источник: TechRadar
Комментарии
Войдите на сайт, чтобы оставить свой комментарий...