Исследователи Wiz проанализировали цепочку поставок, скомпрометированную в результате атаки s1ngularity на платформу сборки NX, и зафиксировали масштабные последствия для экосистемы JavaScript/TypeScript. По их данным, инцидент затронул 2180 учетных записей и привел к раскрытию содержимого 7200 репозиториев, а часть украденных секретов остается действующей.
NX — популярная опенсорсная платформа для управления монорепозиториями и автоматизации сборок, позиционируемая как «платформа для сборки с приоритетом на ИИ, объединяющая от редактора до CI». Широкое распространение инструмента в корпоративной среде усилило эффект атаки на цепочку поставок.
Масштаб и последствия: актуальные секреты и уязвимые активы
На первом этапе (26–27 августа 2025 года) скомпрометированные сборки NX затронули около 1700 пользователей, что привело к утечке более 2000 уникальных секретов и раскрытию порядка 20 000 файлов с зараженных машин. Во второй фазе (28–29 августа) злоумышленники использовали похищенные токены GitHub для перевода приватных репозиториев в публичные, что компрометировало еще 480 аккаунтов и вскрыло данные из 6700 приватных репозиториев. Третий этап (с 31 августа) был нацелен на отдельную организацию и включал публикацию еще 500 приватных репозиториев через две ранее скомпрометированные учетные записи.
Как атаковали: уязвимый workflow и вредоносный npm-пакет
Команда NX опубликовала разбор первопричин: уязвимость в GitHub Actions позволила внедрить исполняемый код через специально подготовленный заголовок pull request’а. Этот канал злоумышленники использовали для публикации в npm вредоносных сборок NX с внедренным скриптом telemetry.js, который запускался после установки.
Малварь представляла собой инфостилер для Linux и macOS, собиравший токены GitHub и npm, ключи SSH, файлы .env и данные криптокошельков. Экфильтрация данных шла в публичные репозитории GitHub с названиями вида s1ngularity-repository (или с суффиксами -0 и -1). На первом этапе в цепочку поставок NX было внедрено как минимум три различные полезные нагрузки.
Роль ИИ: автоматизация поиска секретов и обход защит
Отличительной чертой инцидента стало первое публично задокументированное использование CLI-инструментов ИИ (Claude, Google Gemini, Amazon Q) в качестве орудия атаки на цепочку поставок. Нападавшие применяли адаптивные промпты для поиска конфиденциальных данных, итеративно повышая эффективность извлечения секретов и обхода защитных механизмов.
Оставшиеся риски: действующие токены и расширение ущерба
По оценке Wiz, реальное число пользователей, установивших вредоносные версии NX, может быть заметно выше. При этом около 100 уникальных токенов npm — более 40% от похищенных на первом этапе — все еще активны. Для токенов GitHub активными остаются около 5%, что продолжает создавать риск несанкционированного доступа и lateral movement внутри организаций.
Почему это важно для DevSecOps и команд JS/TS
Инцидент демонстрирует, насколько уязвимы цепочки поставок при компрометации CI/CD и пакетных менеджеров. Одна ошибка в настройках workflow способна привести к массовому распространению вредоносных артефактов, а автоматизация на базе ИИ сокращает тайм-ту-эксфильтрацию и масштаб ущерба.
Практические рекомендации по снижению риска
Немедленные меры: ротация всех потенциально затронутых токенов (GitHub и npm), отзыв SSH-ключей, обновление и переустановка NX из доверенных источников, проверка .env и кошельков на компрометацию, ревизия прав доступа к репозиториям и организациям.
Укрепление процессов: минимизация привилегий GITHUB_TOKEN и явная настройка permissions в workflow; запрет выполнения неподтвержденного кода из PR (особенно из форков); валидация и очистка пользовательских вводов и метаданных PR; использование OIDC для безопасных краткоживущих токенов; включение 2FA/SSO и политики обязательной ротации секретов; применение ограничений для npm-токенов (scope, IP/CIDR), а также функции provenance/attestations; активация secret scanning и оповещений; постоянный мониторинг аномалий CI/CD и зависимостей.
Инцидент s1ngularity — наглядное напоминание, что безопасность цепочки поставок требует дисциплины в управлении секретами, строгой гигиены CI/CD и готовности к противнику, который уже эффективно использует ИИ. Пересмотрите настройки GitHub Actions и npm, проведите ротацию и инвентаризацию секретов, а также обучите команды быстрому реагированию на supply chain-инциденты.