Взлом сканера уязвимостей Trivy: через GitHub Actions распространялся «infostealer»

Trivy уязвимость атака Teampcp цепочка поставок Github bleepingcomputer.com

Сканер уязвимостей Trivy был скомпрометирован в результате атаки на цепочку поставок, осуществленной злоумышленниками TeamPCP, которые распространяли вредоносное ПО для кражи учетных данных через официальные релизы и GitHub Actions. Атака затронула версию 0.69.4 и связанные GitHub Actions, похищая секреты из систем. — bleepingcomputer.com

Сканер уязвимостей Trivy был скомпрометирован в результате атаки на цепочку поставок, осуществленной злоумышленниками, известными как TeamPCP, которые распространяли вредоносное ПО для кражи учетных данных через официальные релизы и GitHub Actions.

Trivy — это популярный сканер безопасности, который помогает выявлять уязвимости, некорректные настройки и раскрытые секреты в контейнерах, средах Kubernetes, репозиториях кода и облачной инфраструктуре. Поскольку его часто используют разработчики и команды по безопасности, он является ценной мишенью для злоумышленников, стремящихся украсть конфиденциальные учетные данные для аутентификации.

О взломе впервые сообщил исследователь безопасности Пол Маккарти, который предупредил, что в версию Trivy 0.69.4 был внедрен бэкдор, а пользователям были опубликованы вредоносные образы контейнеров и релизы GitHub.

Дальнейший анализ, проведенный Socket, а затем Wiz, установил, что атака затронула несколько GitHub Actions, скомпрометировав почти все теги версий репозитория trivy-action.

Исследователи обнаружили, что злоумышленники скомпрометировали процесс сборки Trivy в GitHub, подменив файл entrypoint.sh в GitHub Actions на вредоносную версию и опубликовав троянизированные бинарные файлы в релизе Trivy v0.69.4. Оба этих элемента действовали как похитители информации (infostealers) в основном сканере и связанных GitHub Actions, включая trivy-action и setup-trivy.

Злоумышленники использовали скомпрометированный учетную запись с правами на запись в репозиторий, что позволило им публиковать вредоносные релизы. Эти скомпрометированные учетные данные получены в результате более раннего инцидента в марте, когда учетные данные были эксфильтрованы из среды Trivy и не были полностью изолированы.

Злоумышленник принудительно изменил 75 из 76 тегов в репозитории aquasecurity/trivy-action, перенаправив их на вредоносные коммиты.

В результате любые внешние рабочие процессы, использующие затронутые теги, автоматически выполняли вредоносный код перед запуском легитимных сканирований Trivy, что затрудняло обнаружение компрометации.

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

  • Данные разведки: имя хоста (hostname), whoami, uname, сетевая конфигурация и переменные среды
  • SSH: закрытые и открытые ключи, а также связанные конфигурационные файлы
  • Конфигурации облака и инфраструктуры: учетные данные Git, AWS, GCP, Azure, Kubernetes и Docker
  • Файлы среды: .env и связанные варианты
  • Учетные данные баз данных: конфигурационные файлы для PostgreSQL, MySQL/MariaDB, MongoDB и Redis
  • Файлы учетных данных: включая токены аутентификации менеджеров пакетов и связанных с Vault
  • Конфигурации CI/CD: Terraform, Jenkins, GitLab CI и аналогичные файлы
  • Закрытые TLS-ключи
  • Конфигурации VPN
  • Вебхуки: токены Slack и Discord
  • Файлы истории командной оболочки (Shell history)
  • Системные файлы: /etc/passwd, /etc/shadow и журналы аутентификации
  • Криптовалютные кошельки
Взлом сканера уязвимостей Trivy: через GitHub Actions распространялся «infostealer»
Похититель информации собирает учетные данные, SSH-ключи и файлы среды. Источник: BleepingComputer

Вредоносный скрипт также сканировал области памяти, используемые процессом GitHub Actions Runner.Worker, на наличие JSON-строки “" <name> ":{ "value": "<secret>", "isSecret":true}” для поиска дополнительных секретов аутентификации.

На машинах разработчиков троянизированный бинарный файл Trivy выполнял аналогичный сбор данных, собирая переменные среды, сканируя локальные файлы на наличие учетных данных и перечисляя сетевые интерфейсы.

Собранные данные шифровались и сохранялись в архиве с именем tpcp.tar.gz, который затем эксфильтровался на сервер командно-контрольной связи (C2) с ошибкой в доменном имени (typosquatted) по адресу scan.aquasecurtiy[.]org.

Если эксфильтрация не удавалась, вредоносное ПО создавало в учетной записи жертвы на GitHub общедоступный репозиторий с именем tpcp-docs и загружало туда украденные данные.

Для сохранения присутствия на скомпрометированном устройстве вредоносное ПО также размещало Python-полезную нагрузку по адресу ~/.config/systemd/user/sysmon.py и регистрировало ее как службу systemd. Эта полезная нагрузка проверяла удаленный сервер на наличие дополнительных полезных нагрузок для загрузки, предоставляя злоумышленнику постоянный доступ к устройству.

Считается, что атака связана с группой злоумышленников, известной как TeamPCP, поскольку одна из полезных нагрузок похитителя информации содержала комментарий “TeamPCP Cloud stealer” в последней строке Python-скрипта, внедренного в файловую систему.

“Вредоносное ПО самоидентифицируется как TeamPCP Cloud stealer в комментарии Python в последней строке внедренного сборщика учетных данных файловой системы. TeamPCP, также отслеживаемый как DeadCatx3, PCPcat и ShellForce, является задокументированным облачным злоумышленником, известным эксплуатацией некорректно настроенных API Docker, кластеров Kubernetes, панелей Ray и серверов Redis”, — поясняет Socket.

Взлом сканера уязвимостей Trivy: через GitHub Actions распространялся «infostealer»
Комментарий, показывающий, что скрипт был назван TeamPCP Cloud Stealer. Источник: BleepingComputer

Aqua Security подтвердила инцидент, заявив, что злоумышленник использовал скомпрометированные учетные данные из предыдущего инцидента, которые не были должным образом изолированы.

“Это было продолжение недавнего инцидента (2026-03-01), в ходе которого были эксфильтрованы учетные данные. Наша изоляция первого инцидента была неполной”, — пояснили в Aqua Security.

“Мы сменили секреты и токены, но процесс не был атомарным, и злоумышленники могли получить доступ к обновленным токенам”.

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

Злоумышленники также вмешались в репозиторий проекта, удалив первоначальное сообщение Aqua Security о предыдущем инциденте в марте.

Организации, которые использовали затронутые версии во время инцидента, должны считать свои среды полностью скомпрометированными.

Это включает в себя ротацию всех секретов, таких как облачные учетные данные, SSH-ключи, токены API и пароли баз данных, а также анализ систем на предмет дополнительной компрометации.

Последующая атака распространяет червя CanisterWorm через npm

Исследователи из Aikido также связали ту же группу злоумышленников с последующей кампанией, связанной с новым самораспространяющимся червем под названием “CanisterWorm”, который нацелен на пакеты npm.

Червь компрометирует пакеты, устанавливает постоянный бэкдор через пользовательскую службу systemd, а затем использует украденные токены npm для публикации вредоносных обновлений в другие пакеты.

“Самораспространяющийся червь. deploy.js извлекает токены npm, определяет имена пользователей, перебирает все публикуемые пакеты, увеличивает версии патчей и публикует полезную нагрузку во всей области видимости. 28 пакетов менее чем за 60 секунд”, — подчеркивает Aikido.

Вредоносное ПО использует децентрализованный механизм командно-контрольной связи с помощью каннистров Internet Computer (ICP), которые действуют как резолвер “мертвой почты” (dead-drop resolver), предоставляющий URL-адреса для дополнительных полезных нагрузок.

Использование каннистров ICP делает операцию более устойчивой к блокировке, поскольку только контроллер каннистра может удалить его, а любая попытка остановить его потребует предложения по управлению и голосования сети.

Червь также включает функциональность для сбора токенов аутентификации npm из конфигурационных файлов и переменных среды, что позволяет ему распространяться по средам разработчиков и конвейерам CI/CD.

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

Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.

Похожие новости: