В конце апреля 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