Кибергруппировка TeamPCP атаковала экосистему Checkmarx, внедрив вредоносный код в инструменты для разработчиков и образы Docker

APT

В конце апреля 2026 года экосистема решений для безопасности разработки (DevSecOps) компании Checkmarx стала целью масштабной атаки на цепочку поставок. Злоумышленники, связываемые с группировкой TeamPCP, скомпрометировали официальные каналы распространения, включая репозиторий Docker Hub и расширения для Visual Studio Code. Целью атаки был хищение учетных данных разработчиков и облачных сервисов, что создало значительные риски для компаний, использующих продукты Checkmarx для сканирования кода и инфраструктуры. Инцидент подчёркивает растущую угрозу, исходящую от целенаправленных атак на инструменты, встроенные в процессы разработки и непрерывной интеграции (CI/CD).

Описание

Первыми тревожные сигналы обнаружили специалисты Docker. Внутренний мониторинг платформы Docker Hub выявил подозрительную активность вокруг образов в официальном репозитории "checkmarx/kics". KICS - это популярный open-source сканер для выявления проблем безопасности и уязвимостей в конфигурационных файлах инфраструктуры как кода (IaC), таких как Terraform, Kubernetes и CloudFormation. После предупреждения от Docker команда исследователей безопасности из компании Socket начала расследование и обнаружила, что атакующие перезаписали существующие теги образов, включая "v2.1.20" и "alpine", а также добавили новый тег "v2.1.21", не соответствующий ни одному легитимному релизу.

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

Однако инцидент быстро вышел за рамки отравленных Docker-образов. Расследование выявило признаки компрометации и других инструментов Checkmarx для разработчиков. В частности, в недавних релизах расширения для VS Code (версии 1.17.0 и 1.19.0) был обнаружен код, способный загружать и исполнять удалённый модуль через среду выполнения Bun без подтверждения пользователя или проверки целостности. Исходный вектор заражения был встроен прямо в скомпрометированные расширения, которые добавляли скрытую функцию "MCP addon". При активации расширения эта функция незаметно загружала файл "mcpAddon.js" с жёстко заданного URL на GitHub, принадлежащего самому Checkmarx, и немедленно исполняла его.

Технический анализ показал, что файл "mcpAddon.js" функционирует как автономный сборщик токенов. Он использует оболочку жертвы (PowerShell или Bash) для перечисления и кражи учетных данных GitHub, AWS, Microsoft Azure, Google Cloud, а также файлов конфигурации npm, SSH-ключей и переменных окружения. Собранные данные сжимаются, шифруются и эксфильтрируются по HTTPS на контролируемый злоумышленниками домен, замаскированный под легитимный телеметрический эндпоинт Checkmarx. Ключевым элементом атаки стало манипулирование историей Git для скрытной подготовки вредоносной полезной нагрузки. Злоумышленник внедрил в репозиторий Checkmarx задним числом датированный коммит, который вносил огромный файл "mcpAddon.js". Это позволило разместить вредоносный код в доверенном источнике, что затруднило его обнаружение как при ручном анализе, так и автоматическим сканированием.

Особую опасность представляет механизм распространения и эскалации атаки. Используя украденные токены GitHub, вредоносная программа создавала публичные репозитории под аккаунтами жертв по шаблону "слово-слово-три цифры" с описанием "Checkmarx Configuration Storage". Собранные данные, включая зашифрованный полезный груз и ключи, загружались в эти репозитории, а токены также могли встраиваться в сообщения коммитов. Кроме того, программа злоупотребляла доступом для внедрения вредоносного workflow GitHub Actions в репозитории, куда жертва могла вносить изменения. Этот workflow, срабатывавший при пуше изменений, одним махом сериализовал все секреты проекта в JSON, сохранял их в артефакт, который затем мог быть скачан атакующими. После кражи секретов GitHub программа переключалась на распространение в экосистеме npm, используя украденные учетные данные для поиска пакетов, куда жертва имеет права на запись, и их последующей перепубликации с вредоносным кодом.

На данный момент Docker Hub обновил скомпрометированные теги, вернув их к легитимным диджестам, а тег "v2.1.21" был удалён. Однако последствия атаки требуют активных действий от затронутых организаций. Им необходимо рассматривать этот инцидент как событие компрометации учетных данных и CI/CD-цепочки. Требуется немедленно удалить затронутые расширения, действия и образы контейнеров, а также сменить все потенциально раскрытые учетные данные: токены GitHub и npm, облачные ключи доступа, SSH-ключи и секреты CI/CD. Важно провести аудит GitHub на предмет несанкционированного создания репозиториев, особенно с именами, соответствующими шаблону атаки, появления неожиданных workflow-файлов и подозрительных загрузок артефактов. В облачных средах следует проверить логи доступа на предмет необычного использования токенов. Для снижения ущерба от подобных атак в будущем эксперты рекомендуют минимизировать область действия токенов, использовать краткосрочные учетные данные, ужесточить разрешения в GitHub Actions и наладить мониторинг изменений в процессах сборки и публикации.

Индикаторы компрометации

Open VSX / VS Code Extensions

  • checkmarx/cx-dev-assist@1.19.0
  • checkmarx/cx-dev-assist@1.17.0
  • checkmarx/ast-results@2.66.0
  • checkmarx/ast-results@2.63.0

Network Indicators

  • 94.154.172.43
  • https://audit.checkmarx.cx/v1/telemetry

alpine, v2.1.20, v2.1.21

  • Index manifest digest: sha256:2588a44890263a8185bd5d9fadb6bc9220b60245dbcbc4da35e1b62a6f8c230d
  • Image digest (linux/amd64): sha256:d186161ae8e33cd7702dd2a6c0337deb14e2b178542d232129c0da64b1af06e4
  • Image digest (linux/arm64): sha256:415610a42c5b51347709e315f5efb6fffa588b6ebc1b95b24abf28088347791b

Affected package URLs

  • pkg:docker/checkmarx/kics@alpine?platform=linux%2Famd64
  • pkg:docker/checkmarx/kics@v2.1.20?platform=linux%2Famd64
  • pkg:docker/checkmarx/kics@v2.1.21?platform=linux%2Famd64
  • pkg:docker/checkmarx/kics@alpine?platform=linux%2Farm64
  • pkg:docker/checkmarx/kics@v2.1.20?platform=linux%2Farm64
  • pkg:docker/checkmarx/kics@v2.1.21?platform=linux%2Farm64

debian, v2.1.20-debian, v2.1.21-debian

  • Index manifest digest: sha256:222e6bfed0f3bb1937bf5e719a2342871ccd683ff1c0cb967c8e31ea58beaf7b
  • Image digest (linux/amd64): sha256:a6871deb0480e1205c1daff10cedf4e60ad951605fd1a4efaca0a9c54d56d1cb
  • Image digest (linux/arm64): sha256:ff7b0f114f87c67402dfc2459bb3d8954dd88e537b0e459482c04cffa26c1f07

Affected package URLs

  • pkg:docker/checkmarx/kics@debian?platform=linux%2Famd64
  • pkg:docker/checkmarx/kics@v2.1.20-debian?platform=linux%2Famd64
  • pkg:docker/checkmarx/kics@v2.1.21-debian?platform=linux%2Famd64
  • pkg:docker/checkmarx/kics@debian?platform=linux%2Farm64
  • pkg:docker/checkmarx/kics@v2.1.20-debian?platform=linux%2Farm64
  • pkg:docker/checkmarx/kics@v2.1.21-debian?platform=linux%2Farm64

latest

  • Index manifest digest: sha256:a0d9366f6f0166dcbf92fcdc98e1a03d2e6210e8d7e8573f74d50849130651a0
  • Image digest (linux/amd64): sha256:26e8e9c5e53c972997a278ca6e12708b8788b70575ca013fd30bfda34ab5f48f
  • Image digest (linux/arm64): sha256:7391b531a07fccbbeaf59a488e1376cfe5b27aef757430a36d6d3a087c610322

Affected package URLs

  • pkg:docker/checkmarx/kics@latest?platform=linux%2Famd64
  • pkg:docker/checkmarx/kics@latest?platform=linux%2Farm64

mcpAddon.js

  • MD5 - d47de3772f2d61a043e7047431ef4cf4
  • SHA1 - 2b12cc5cc91ec483048abcbd6d523cdc9ebae3f3
  • SHA256 - 24680027afadea90c7c713821e214b15cb6c922e67ac01109fb1edb3ee4741d9

kics (ELF executable)

  • MD5 - e1023db24a29ab0229d99764e2c8deba
  • SHA1 - 250f3633529457477a9f8fd3db3472e94383606a
  • SHA256 - 2a6a35f06118ff7d61bfd36a5788557b695095e7c9a609b4a01956883f146f50
Комментарии: 0