Хакеры внедрили инфостилер в популярный сканер уязвимостей Trivy, подменив почти все теги GitHub Actions и опубликовав вредоносный релиз. Малварь похищала секреты из CI/CD-пайплайнов и с машин разработчиков, шифровала данные и отправляла на управляющий сервер.

Trivy — известный опенсорсный сканер уязвимостей, созданный Aqua Security, который помогает выявлять проблемы безопасности и жестко закодированные секреты в контейнерах, Kubernetes-кластерах, репозиториях и облачной инфраструктуре. На GitHub у проекта насчитывается более 33 200 звезд.

Атака произошла в минувший четверг: злоумышленники использовали украденные учетные данные и выполнили force-push 75 из 76 тегов в репозитории aquasecurity/trivy-action, а также подменили семь тегов setup-trivy. В результате теги стали указывать на вредоносные коммиты вместо легитимных. Среди скомпрометированных оказались версии @0.34.2, @0.33 и @0.18.0, а единственной незатронутой осталась @0.35.0.

Параллельно атакующие подменили файл entrypoint.sh в GitHub Actions на вредоносную версию и опубликовали троянизированные бинарники Trivy v0.69.4 через GitHub Releases, Docker Hub, GHCR и ECR. В настоящее время мейнтейнеры уже удалили эти артефакты.

Как отмечают специалисты компаний Socket и Wiz, атакующие не стали делать новый коммит или создавать релиз (это было бы заметно в истории и спровоцировало бы появление уведомлений). Вместо этого они перенаправили существующие теги, клонировав метаданные оригинальных коммитов: имя автора, email, временные метки и даже текст сообщения с номером PR. Таким образом, любой воркфлоу, ссылающийся на эти теги, автоматически подтягивал вредоносный код.

Ответственность за атаку, вероятно, лежит на группировке TeamPCP (она же DeadCatx3, PCPcat и ShellForce). Эксперты идентифицировали злоумышленников по комментарию «TeamPCP Cloud stealer» в последней строке одного из Python-скриптов инфостилера. По данным аналитиков Socket, эта группировка специализируется на атаках на облачную инфраструктуру и известна эксплуатацией неправильно сконфигурированных Docker API, Kubernetes-кластеров, дашбордов Ray и серверов Redis.

Малварь параллельно запускала легитимный сервис Trivy и инфостилер. Вредонос собирал переменные окружения, сканировал файловую систему в поисках учетных данных (SSH-ключи, облачные конфигурации AWS, GCP, Azure, Kubernetes, Docker, файлы .env, пароли от БД, токены Slack и Discord, TLS-ключи, конфигурации VPN и данные криптокошельков), а также перечислял сетевые интерфейсы. Помимо этого, скрипт сканировал регионы памяти процесса GitHub Actions Runner.Worker в поисках JSON-строк с секретами.

Все собранные данные шифровались и отправлялись POST-запросом на тайпосквотный домен scan.aquasecurtiy[.]org, принадлежащий атакующим. Если эксфильтрация не удавалась, малварь создавала публичный репозиторий tpcp-docs в аккаунте жертвы на GitHub и загружала информацию туда.

На машинах разработчиков троянизированный бинарник Trivy дополнительно устанавливал Python-пейлоад (~/.config/systemd/user/sysmon.py), который регистрировался как systemd-сервис и периодически проверял удаленный сервер на предмет новых полезных нагрузок.

Мейнтейнер Trivy Итай Шакури (Itay Shakury) подтвердил компрометацию и пояснил, что корни инцидента ведут к более ранней атаке, произошедшей еще 1 марта 2026 года. Тогда хакеры скомпрометировали расширение Aqua Trivy для VS Code и получили учетные данные с правами записи для GitHub-аккаунта Trivy. В Aqua Security сменили токены, однако часть артефактов (API-ключи, сертификаты, пароли) осталась доступна злоумышленникам, что и позволило им провести повторную атаку.

«Если вы подозреваете, что использовали скомпрометированную версию, считайте все секреты пайплайна скомпрометированными и немедленно измените их», — пишет Шакури.

Вредоносный релиз Trivy v0.69.4 был доступен около трех часов, а вредоносные теги GitHub Actions оставались активными порядка 12 часов. Кроме того, атакующие удалили из репозитория Trivy информацию о мартовском инциденте.

Исследователи из компании Aikido связывают эту атаку с другой вредоносной кампанией: саморазмножающимся червем CanisterWorm, нацеленным на npm-пакеты. Червь использует украденные npm-токены для публикации вредоносных обновлений в других пакетах и способен скомпрометировать 28 пакетов за минуту. Для управления CanisterWorm используется децентрализованный механизм на базе Internet Computer (ICP), что делает инфраструктуру устойчивой к блокировке: для удаления canister необходимо голосование участников сети.

Всем организациям, использовавшим затронутые версии Trivy, рекомендуется считать свои среды полностью скомпрометированными и изменить все секреты — от облачных учетных данных и SSH-ключей до токенов API и паролей от БД.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии