Сценарии автоматизации превратились в конвейер по краже секретов.

Команда Socket описала активную кампанию в экосистеме npm, которая маскируется под популярные пакеты и превращает случайную установку зависимости в цепочку компрометации репозиториев и CI. Атаку отслеживают под именем SANDWORM_MODE — по переключателям окружения SANDWORM_ внутри вредоносного кода.
По данным Socket, злоумышленники распространили как минимум 19 пакетов-двойников через тайпсквоттинг и «похожий» нейминг. Один из примеров — suport-color, который имитирует библиотеку supports-color и при этом сохраняет ожидаемое поведение, чтобы не вызвать подозрений. При импорте он запускает многоступенчатую нагрузку: собирает секреты разработчика и CI, передаёт данные через GitHub API с резервным каналом через DNS, подмешивает зависимости и workflow-файлы в доступные репозитории и закрепляется через git-хуки так, чтобы заражение «переезжало» в новые проекты.
Отдельная ветка атаки связана с GitHub Actions. Socket обнаружила публичный репозиторий ci-quality/code-quality-check, который выдаёт себя за проверку качества кода, но фактически собирает секреты из окружения CI, читает токены из .npmrc и отправляет их наружу по HTTPS с запасным вариантом через DNS. Затем действие пытается распространяться дальше, модифицируя package.json и workflow в других репозиториях с помощью доступных токенов. В связке это образует замкнутый цикл: заражённая зависимость добавляет workflow, CI запускает действие, действие крадёт секреты и помогает продвигаться дальше.
Особенность нынешнего варианта — прицельные атаки на инструменты разработки с ИИ. Нагрузка внедряет поддельный MCP-сервер и прописывает его в конфигурации нескольких помощников для программирования, включая Claude Code, Claude Desktop, Cursor, Continue для VS Code и Windsurf/Codeium. Через подсказки в описаниях «инструментов» сервер подталкивает ассистента незаметно читать SSH-ключи, облачные учётные данные, .npmrc и переменные окружения, а затем накапливает их для последующей отправки. Дополнительно вредоносный код ищет ключи API для ряда провайдеров LLM, среди них OpenAI, Anthropic и Google.
Socket также упоминает механизм аварийного отключения — разрушительную функцию, которая по задумке может стирать домашний каталог, если одновременно пропадает доступ и к GitHub, и к npm. В описанном наборе она отключена, но сам механизм остаётся тревожным сигналом.
Авторы сообщили о находках npm, GitHub и Cloudflare заранее. Cloudflare заблокировала связанную инфраструктуру, npm удалила вредоносные пакеты, GitHub убрал инфраструктуру злоумышленников. В качестве срочных мер Socket рекомендует считать среду, где запускались подозрительные зависимости, потенциально скомпрометированной, оперативно сменить токены и секреты, а также проверить репозитории на неожиданные изменения в зависимостях, workflow и глобальных шаблонах git-хуков. Схожая реакция потребовалась и после предыдущих масштабных атак на CI/CD-инфраструктуру npm, когда GitHub был вынужден пересмотреть механизмы публикации пакетов.