План А - криптокошельки, план Б - массовый взлом: атака на GitHub Actions

План А - криптокошельки, план Б - массовый взлом: атака на GitHub Actions

Всего за 20 минут злоумышленники превратили точечный удар в масштабное заражение.

image

Совсем недавно мы писали о компрометации популярного инструмента «tj-actions/changed-files» в GitHub Actions, использовавшегося во множестве CI/CD-процессов. Уязвимость CVE-2025-30066 с оценкой 8.6 по шкале CVSS допускала утечку секретов из репозиториев, где выполнялся заражённый код.

На первый взгляд всё это выглядело как масштабная атака на цепочку поставок с неясным вектором и мотивацией. Однако теперь выяснилось, что исходной целью атаки был вовсе не случайный набор репозиториев, а конкретный проект с открытым кодом, принадлежащий криптовалютной платформе Coinbase.

Исследователи из Unit 42 рассказали , что вредоносный код изначально был встроен в CI/CD-пайплайн проекта agentkit, предположительно с целью дальнейшего распространения или компрометации. Это было точечное и технически сложное проникновение, рассчитанное на то, чтобы незаметно использовать инфраструктуру Coinbase.

Злоумышленник действовал через цепочку зависимостей: изначально была заражена GitHub Action «reviewdog/action-setup» (CVE-2025-30154), на которую опирается «tj-actions/eslint-changed-files», а уже через неё — само действие «tj-actions/changed-files». Таким способом атакующий получил персональный токен доступа (PAT), позволяющий вносить изменения в Action-репозиторий и распространять вредоносную версию дальше. Таким образом была создана скрытая цепочка заражения, при которой каждое обновление зависимости могло привести к утечке данных.

Кульминацией стало то, что заражённый код начал попадать в десятки других репозиториев, использующих «tj-actions/changed-files». Всего, по подсчётам Endor Labs, секреты утекли из 218 репозиториев. В числе утекших данных — учётные записи от AWS, DockerHub, npm и токены доступа GitHub.

Хотя фактическое число пострадавших оказалось меньше ожидаемого , инцидент вызвал серьёзное беспокойство из-за потенциального масштаба угрозы: десятки тысяч проектов используют заражённое действие в своей автоматизации.

Важно, что на каждом этапе атаки применялись разные полезные нагрузки. Если в массовом заражении код просто выводил содержимое переменных окружения в логи, то в случае с Coinbase он был более избирательным — выполнялся только в репозиториях, принадлежащих конкретной организации, и извлекал лишь определённые токены. Это говорит о высокой технической подготовке злоумышленника и его понимании специфики CI/CD-инфраструктур.

Следы ведут к анонимным аккаунтам на GitHub, в том числе «iLrmKCu86tjwp8», которые создавали форки проектов Coinbase, вносили скрытые изменения в файлы конфигурации и отправляли pull-запросы с заражёнными зависимостями.

Предположительно, использовались так называемые «висячие коммиты» — техника, при которой вредоносные изменения сохраняются в ветке форка, но не сразу видны в основной репозитории. GitHub пока не подтвердил, как именно хакерам удалось получить доступ к организации reviewdog, но отметил, что атака не затронула инфраструктуру самой платформы.

По мнению исследователей, изначальная цель — кража криптовалют или доступ к кошелькам Coinbase. Однако после того, как атака была обнаружена и пресечена, злоумышленник, опасаясь потери доступа, резко расширил масштаб — массовое заражение началось всего через 20 минут после того, как Coinbase устранил уязвимость в своих проектах.

Криптобиржа сообщила, что по состоянию на 19 марта все последствия атаки были устранены, но инцидент стал тревожным напоминанием о том, насколько уязвимыми могут быть даже хорошо защищённые Open Source проекты, если в цепочке сборки появляется заражённая зависимость.

Взломают завтра? как математика предсказывает кибератаки

31 марта в 14:00 — SuperHardio Brothers* раскрывают, как превратить математическое моделирование времени атак в конкурентное преимущество вашей компании.

Реклама. АО «Позитив Текнолоджиз», ИНН 7718668887 *герои-эксперты харденинга