Вторая атака за месяц: цепочка поставок Trivy снова под ударом
Популярный сканер уязвимостей с открытым исходным кодом Trivy, развиваемый компанией Aqua Security, подвергся повторному взлому. Всего за месяц это уже второй инцидент, в ходе которого злоумышленники внедрили вредоносное программное обеспечение, нацеленное на кражу конфиденциальных секретов из CI/CD-окружений.
На этот раз под удар попали два официальных GitHub-действия: aquasecurity/trivy-action и aquasecurity/setup-trivy.
Первое используется для сканирования Docker-образов на предмет уязвимостей, второе — для настройки рабочего процесса GitHub Actions с определённой версией Trivy. По данным исследователя безопасности из Socket Филиппа Буркхардта, злоумышленник принудительно перезаписал 75 из 76 версионных тегов в репозитории aquasecurity/trivy-action.
«Эти теги были изменены таким образом, чтобы доставлять вредоносную нагрузку, — пояснил Буркхардт. — В результате доверенные ссылки на версии превратились в механизм распространения похитителя данных».
Как работает вредоносная нагрузка
Закладка активируется внутри сред выполнения GitHub Actions. Её цель — извлечь ценные разработческие секреты: SSH-ключи, учётные данные для облачных провайдеров, доступы к базам данных, конфигурации Git и Docker, токены Kubernetes, а также данные криптовалютных кошельков. Вредоносный код действует в три этапа:
Сбор данных — сканирование системных переменных окружения и учётных записей в памяти процесса раннера и в файловой системе.
Шифрование — все собранные данные шифруются перед отправкой.
Эксфильтрация — похищенная информация передаётся на подконтрольный атакующим сервер через HTTP POST-запрос.
Если основная попытка выгрузки не удаётся, срабатывает резервный механизм. Злоумышленники используют захваченный GitHub Personal Access Token (PAT) для создания публичного репозитория с именем tpcp-docs, куда и складируются украденные данные.
Предыдущий инцидент: как всё начиналось
Это уже второй инцидент в цепочке поставок Trivy за короткий промежуток времени. В конце февраля — начале марта 2026 года автоматизированный бот под названием hackerbot-claw использовал уязвимость в рабочем процессе pull_request_target. Это позволило ему похитить Personal Access Token, а затем захватить контроль над GitHub-репозиторием, удалить несколько релизных версий и загрузить две вредоносные версии расширения для Visual Studio Code в каталог Open VSX.
Первым о новой компрометации сообщил исследователь безопасности Пол Маккарти, обнаружив публикацию скомпрометированной версии 0.69.4 в репозитории aquasecurity/trivy. Эта версия была оперативно удалена. Как выяснили специалисты Wiz, версия 0.69.4 запускала одновременно легитимный сервис Trivy и вредоносный код, который выполнял две ключевые задачи:
Кража данных — сканирование переменных окружения и учётных записей с последующим шифрованием и отправкой на домен scan.aquasecurtiy[.]org.
Закрепление в системе — после подтверждения, что скомпрометированная среда является рабочей станцией разработчика, вредонос настраивал systemd-сервис для запуска Python-скрипта sysmon.py, который периодически опрашивал внешний сервер, загружал новую нагрузку и выполнял её.
Что стало причиной уязвимости
По словам Итая Шакури, вице-президента по открытому исходному коду в Aqua Security, злоумышленники использовали скомпрометированные учётные данные для публикации вредоносных версий Trivy, trivy-action и setup-trivy. В случае с aquasecurity/trivy-action атакующий принудительно перезаписал 75 тегов версий, указывая их на вредоносные коммиты, содержащие Python-стилер. Важно отметить: новый релиз не создавался, запись в ветки не производилась — атакующий действовал в обход стандартных практик. Аналогичным образом были перезаписаны семь тегов aquasecurity/setup-trivy.
«В этой атаке злоумышленнику не нужно было эксплуатировать уязвимости самого Git, — комментирует Буркхардт. — У него были легитимные учётные данные с достаточными привилегиями для отправки кода и перезаписи тегов. Что именно за учётные данные использовались — PAT сопровождающего или токен автоматизации — остаётся неясным. Однако первопричина установлена: компрометация учётных данных, которая перекочевала из предыдущего инцидента».
В Aqua Security признали, что текущая атака стала следствием неполной изоляции после инцидента с hackerbot-claw. «Мы сменили секреты и токены, но процесс не был атомарным, и атакующие могли получить доступ к обновлённым токенам, — пояснил Шакури. — Теперь мы применяем более жёсткий подход: блокируем все автоматизированные действия и любые токены, чтобы полностью искоренить проблему».
Кто стоит за атакой
На данный момент личность злоумышленников официально не установлена, однако есть признаки, указывающие на группировку TeamPCP (также известна как DeadCatx3, PCPcat, PersyPCP, ShellForce и CipherForce). Эта группа известна как оператор облачной киберпреступной платформы, специализирующейся на взломе современной облачной инфраструктуры для кражи данных и последующего вымогательства.
В исходном коде похититель данных самоидентифицируется как «TeamPCP Cloud stealer». Вредонос нацелен на широкий спектр учётных данных, что соответствует профилю группы. Особое внимание к ключам валидаторов Solana и криптовалютным кошелькам, хотя ранее за TeamPCP такая специфическая направленность не была задокументирована, она согласуется с финансовой мотивацией группировки. Специалисты допускают, что самоназвание может быть подлогом, однако техническое сходство с предыдущими инструментами TeamPCP делает атрибуцию правдоподобной.
Что делать пользователям
Пользователям Trivy настоятельно рекомендуется убедиться, что они используют безопасные версии:
trivy — 0.69.3
trivy-action — 0.35.0
setup-trivy — 0.2.6
Если есть подозрение, что использовалась скомпрометированная версия, необходимо незамедлительно считать все секреты, использованные в конвейере, скомпрометированными и сменить их.
Дополнительные меры защиты
Заблокировать на сетевом уровне домен эксфильтрации scan.aquasecurtiy[.]org и связанный с ним IP-адрес 45.148.10[.]212.
Проверить учётные записи GitHub на наличие репозитория с именем tpcp-docs — это может указывать на успешную эксфильтрацию данных через резервный механизм.
Фиксировать GitHub Actions не по тегам версий, а по полным SHA-хешам. Как показала атака, теги могут быть перемещены на вредоносные коммиты, и использование SHA-хешей исключает такой риск.