18 мая в маркетплейсе расширений VS Code на 18 минут появилась вредоносная версия популярного расширения Nx Console (2,2 миллиона установок). Этого хватило — группировка TeamPCP через скомпрометированного сотрудника GitHub получила доступ примерно к 3800 внутренним репозиториям компании и выставила их на продажу за $50 000. GitHub не подтвердил, что вектором атаки было именно Nx Console, но ИБ-исследователи связывают два инцидента по таймлайну и общему почерку.

Расширение работало как обычное — до момента, когда разработчик открывал любой проект. Тогда оно молча скачивало обфусцированный скрипт на 498 КБ, спрятанный в "осиротевшем" коммите официального репозитория nrwl/nx на GitHub. Скрипт собирал все, до чего мог дотянуться: хранилища паролей 1Password, конфигурации Claude Code, токены npm, ключи GitHub и AWS.

Отдельную находку описала Sophos: на затронутом устройстве обнаружился Python-бэкдор cat.py, замаскированный под компонент терминала Kitty. Раз в час он обращался к поиску по коммитам на GitHub — искал ключевое слово "firedalazer" — и извлекал команды из публичных коммит-сообщений. По сути атакующие использовали публичную инфраструктуру GitHub как канал управления вредоносом: команды лежали у всех на виду, но выглядели как обычная активность разработчиков.

Самое интересное — где началась цепочка. Разработчик Nx Console был скомпрометирован ранее через атаку на TanStack — его учетные данные GitHub утекли через GitHub CLI. Одна supply-chain-атака запустила следующую. Среди других пострадавших от компрометации TanStack — OpenAI, Mistral AI и Grafana Labs.

GitHub утверждает, что клиентские репозитории, аккаунты организаций и пользовательские данные не затронуты, а критические секреты ротированы в первый же день. Для разработчиков, которые пользуются Nx Console, главное — убедиться, что расширение обновлено до версии 18.100.0 или выше. В целом инцидент — аргумент в пользу того, чтобы отключить автообновление расширений в VS Code, провести аудит установленных плагинов и ротировать долгоживущие токены. IDE-расширение — это не "маленький плагин", а код с доступом к терминалу, репозиториям и секретам.

P.S. Поддержать меня можно подпиской на канал "сбежавшая нейросеть", где я рассказываю про ИИ с творческой стороны.