
Хакер #309. Самооборона по-хакерски
Специалисты пришли к выводу, что каскадная атака на цепочку поставок в GitHub Actions, связанная со взломом tj-actions/changed-files и reviewdog/action-setup@v1, затронула лишь 218 репозиториев из 23 000, использующих tj-actions/changed-files. При этом основной целью злоумышленников эксперты называют криптобиржу Coinbase.
Исходная атака
Напомним, что на прошлой неделе была обнаружена компрометация пакета tj-actions/changed-files, который входит в состав tj-actions. Это один из многочисленных GitHub Actions на одноименной платформе, предоставляющей бесплатную систему CI/CD для публичных репозиториев. Обработчик changed‑files использовался в 23 000 репозиториях, и его попытались использовать для кражи конфиденциальных данных.
После взлома вредоносный код должен был записывать CI/CD-секреты в журналы рабочих процессов для всех 23 000 репозиториев, использующих tj-actions/changed-files. Если эти логи были публичными, их мог просмотреть любой желающий.
Мейнтейнер проекта сообщал, что злоумышленники неизвестным образом скомпрометировали его токен персонального доступа (personal access token, PAT) на GitHub и учетные данные, которые @tj-actions-bot использовал для получения привилегированного доступа к репозиторию. Однако оставалось неясным, как именно произошла эта компрометация.
Позже аналитики компании Wiz сообщили, что им удалось разобраться в произошедшем. Исследователи назвали случившееся каскадной атакой на цепочку поставок и рассказали, что она началась с другого GitHub Action — reviewdog/action-setup.
По данным Wiz, сначала злоумышленники скомпрометировали тег v1 для reviewdog/action-setup и внедрили в пакет аналогичный код для записи секретов CI/CD в лог-файлы.
Поскольку tj-actions/eslint-changed-files использует reviewdog/action-setup, предполагается, что скомпрометированный Action использовался для извлечения и кражи персонального токена PAT, затем использованного для доступа к tj-actions.
Как объясняли эксперты, злоумышленники внедряли в файл install.sh полезную нагрузку, закодированную base64, что в итоге приводило к утечке секретов из затронутых рабочих процессов CI. Как и в случае с tj-actions, раскрытые секреты в итоге отображались в публичных репозиториях как часть логов.
Хотя точный способ взлома не был установлен, специалисты отмечали, что Reviewdog имеет большую базу мейнтейнеров и принимает новых участников через автоматические приглашения, что значительно увеличивает риски и количество возможностей для взлома.
218 пострадавших
Как теперь сообщили специалисты Endor Labs, компрометация tj-actions/changed-files затронула лишь небольшой процент из 23 000 проектов, использующих обработчик. По оценкам исследователей, только 218 репозиториев действительно раскрыли секреты и допустили утечки в результате этой атаки.
Эксперты подчеркивают, что, невзирая на небольшое количество пострадавших, последствия все равно могут быть очень серьезными, поскольку некоторые затронутые атакой репозитории очень популярны и могут использоваться злоумышленниками в дальнейших атаках на цепочки поставок.
Так, в период, когда произошла атака (с 14 по 15 марта 2025 года) на взломанный GitHub Action ссылались 5416 репозиториев, принадлежащих 4072 различным организациям. Специалисты отмечают, что некоторые из этих репозиториев имеют более 350 000 звезд и 63 000 форков.
Однако из этих 5416 репозиториев только 614 запустили соответствующий рабочий процесс в указанный период времени. И из этих 614 репозиториев только 218 действительно опубликовали секреты в своих журналах, а остальные оказались защищены от подобных утечек.
«Выполнение GitHub Action не обязательно означает, что какие-либо учетные данные попали в журнал. Некоторые репозитории следовали наилучшим практикам безопасности и ссылались на SHA коммита вместо mutable-тега. Другие были запущены до того, как злоумышленник изменил все теги версий таким образом, что те указывали на вредоносный коммит», — объяснили эксперты.
В большинстве случаев утечка затронула только токены GitHub, срок действия которых составляет 24 часа. То есть у злоумышленников было весьма короткое окно для возможной эксплуатации. Однако в некоторых случаях все же произошла утечка учетных данных для DockerHub, npm и AWS, что несет более серьезные риски.
Coinbase
Углубленные отчеты об этой атаке на цепочку поставок представили аналитики Palo Alto Unit 42 и Wiz. По их данным, атака была тщательно спланирована и действительно началась с внедрения вредоносного кода в GitHub Action reviewdog/action-setup@v1.
По-прежнему неясно, как именно произошел взлом, но когда tj-actions/eslint-changed-files задействовал reviewdog, его секреты оказались записаны в workflow-логи. Это позволило злоумышленникам похитить токен персонального доступа (personal access token, PAT), который затем был использован для отправки вредоносного коммита в tj-actions/changed-files, что снова приводило к утечке секретов в логи.
Однако исследователи пишут, что изначальная атака была нацелена на проекты криптовалютной биржи Coinbase. В частности, был атакован популярный фреймворк Coinbase — coinbase/agentkit, позволяющий ИИ-агентам взаимодействовать с блокчейном.
«Атакующий получил токен GitHub с правами на запись в репозиторий coinbase/agentkit 14 марта 2025 года, менее чем за два часа до начала более масштабной атаки на tj-actions/changed-files», — поясняют в Palo Alto Unit 42.
Представители Coinbase сообщили исследователям, что в итоге эта попытка компрометации не удалась и не нанесла никакого ущерба проекту agentkit или другим ресурсам биржи.
«Полезная нагрузка была направлена на эксплуатацию публичного CI/CD-потока одного из опенсорсных проектов [Coinbase] — agentkit. Целью, вероятно, являлось его использование для дальнейших компрометаций. Однако злоумышленникам не удалось воспользоваться секретами Coinbase и опубликовать пакеты», — пишут аналитики.
В итоге эксперты Palo Alto Unit 42 и Wiz пришли к выводу, что изначально вредоносная кампания была нацелена на Coinbase и только потом распространилась на другие проекты, использующие tj-actions/changed-files, после провала первой попытки компрометации.
В настоящее время компрометации Reviewdog и Tj-actions были присвоены следующие идентификаторы: CVE-2025-30154 и CVE-2025-30066.
