TeamPCP показал, что доверенные пакеты могут быть опасны

Кампания TeamPCP скомпрометировала PyPI, npm и VS Code, показывая, что верификация издателя не гарантирует безопасность.

2026-06-03 GIGATAP Team #security
#supply-chain-security#developer-security#npm

Что произошло#

Кампания TeamPCP перешла новую черту в конце мая 2026 года. По данным SANS Internet Storm Center, атака затронула сразу несколько экосистем пакетов: вредоносное расширение VS Code, связанное с внутренним взломом GitHub; троянские версии официального Python SDK Microsoft на PyPI; массовую волну npm в экосистеме @antv.

Смысл не в том, что отравление пакетов новое, а в том, что несколько упрощенных методов доверия не сработали одновременно. Значок проверенного издателя не защитил расширение Visual Studio Marketplace, официальный путь Microsoft не предотвратил вредоносный релиз на PyPI, визуальные сигналы пакетов и метки доверия не остановили пользователей за короткие окна публикации.

Путь вторжения через GitHub#

Наиболее серьезный случай связан с расширением Nx Console для VS Code, версия 18.95.0. GitHub CISO Alexis Wales сообщил, что оно стало источником утечки около 3800 внутренних репозиториев GitHub. Расширение публиковалось под nrwl.angular-console с отметкой verified-publisher и было доступно около 18 минут.

Автообновление сотрудника GitHub активировало вредоносное расширение, которое украло секреты разработчиков. Эти данные позволили перемещаться по внутреннему CI/CD GitHub. Жертвами с автообновлением оказались также OpenAI, Grafana Labs и Mistral AI.

Ключевой момент — цепочка учетных данных. SANS связывает креденшелы, собранные во время волны TanStack 11 мая, с публикацией Nx Console 18 мая, показывая использование одной компрометации для запуска следующей через доверенный путь.

Вредоносный PyPI-пакет Microsoft#

Второй случай — Python SDK Azure Durable Functions (durabletask) Microsoft. Троянские версии 1.4.1–1.4.3 были опубликованы 19 мая 2026 и позже удалены. SDK имеет около 417 000 загрузок в месяц.

Вредоносный дроппер внедрен в исходные файлы Python. Любой импорт этих версий мог выполнить код. Второй этап описан как крадущий креденшелы и червь, нацеленный на AWS, Azure, GCP, HashiCorp Vault, 1Password и Bitwarden. Независимое расследование также указывает на Linux-дисковый вайпер.

Команды, установившие durabletask версий 1.4.1–1.4.3 19 мая, должны считать среду скомпрометированной, включая CI runners, контейнеры, ноутбуки разработчиков и тестовые машины.

Волна npm @antv#

Третья волна затронула экосистему @antv. SANS сообщает о 639 вредоносных версиях 323 пакетов через скомпрометированный аккаунт atool. Упомянуты echarts-for-react (~1,1 млн загрузок в неделю) и size-sensor (~4,2 млн загрузок в неделю).

Payload — обфусцированный JavaScript (~499 КБ), собирающий более 20 типов креденшелов: GitHub и npm токены, AWS ключи, GCP и Azure токены. 42 пакета показывали фейковые Sigstore-значки.

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

Почему это важно#

Кампания бьет по «мягкому центру» разработки: креденшелы, автоматизация, implicit trust. Пакет может украсть токены, которые запускают следующий вредоносный релиз, достигая более доверенной аудитории. Значки издателей и официальные аккаунты не гарантируют безопасность релиза.

Что проверить#

  • VS Code: версии Nx Console 18.95.0 на машинах с доступом к внутренним репозиториям и CI/CD.
  • PyPI: логи зависимостей durabletask 1.4.1–1.4.3 за 19 мая.
  • npm: lockfiles, кэш артефактов и CI-логи @antv пакетов, включая echarts-for-react и size-sensor.
  • Временные runners и контейнеры, которые могли подтянуть зависимости.
  • Конфигурации автообновления IDE и локальные инструменты AI-агентов на предмет неожиданного доступа к креденшелам.
  • При выявлении риска — ротация всех токенов и идентичностей машин, включая developer tokens, CI/CD и ключи облака.