Как хакеры за 72 часа превратили npm-пакет в ключ от целого облака AWS

Отчёт Google «Cloud Threat Horizons» за первое полугодие 2026 года описывает атаку, от которой у безопасников буквально холодеет в животе. Группировка, получившая идентификатор UNC6426, начала с одного скомпрометированного пакета в npm-реестре, а закончила полным административным доступом к AWS-инфраструктуре жертвы. Данные выкачаны, серверы уничтожены, репозитории переименованы и выложены в публичный доступ. Всё уложилось меньше чем в трое суток.
Как хакеры за 72 часа превратили npm-пакет в ключ от целого облака AWS
Изображение носит иллюстративный характер

Началось всё в августе 2025 года. Атакующие нацелились на популярный npm-пакет nx, эксплуатируя уязвимый workflow pull_request_target — тип атаки, известный в профессиональных кругах как «Pwn Request». Через эту брешь в реестр npm были загружены троянизированные версии пакета. Компания Socket, специализирующаяся на безопасности цепочек поставок ПО, позднее охарактеризовала произошедшее как «атаку на цепочку поставок с использованием ИИ». И это не преувеличение.

Точкой входа стал сотрудник, который запустил редактор кода с плагином Nx Console. Плагин подтянул обновлённый (и уже заражённый) пакет, после чего сработал скрипт postinstall. Он запустил QUIETVAULT — JavaScript-стилер учётных данных. Вот тут начинается самое неприятное: QUIETVAULT не просто сканировал файловую систему. Он использовал уже установленный на машине жертвы инструмент на базе большой языковой модели (LLM), чтобы находить переменные окружения, системную информацию и персональные токены доступа к GitHub (PAT). Фактически, ИИ-инструмент, стоявший на машине для рабочих задач, был превращён в оружие. Собранное улетало в публичный GitHub-репозиторий с характерным именем /s1ngularity-repository-1.

Через два дня после первого заражения группировка перешла к разведке. С украденным PAT атакующие запустили Nord Stream — это легитимный open-source инструмент, предназначенный для извлечения секретов из CI/CD-сред. Через него они вытащили учётные данные сервисной учётной записи GitHub. Дальше — хуже. Между GitHub и AWS существовало доверие, настроенное через OpenID Connect (OIDC), и UNC6426 этим воспользовались. Параметр --aws-role в Nord Stream позволил генерировать временные токены AWS STS для роли с избыточными правами. Роль называлась «Actions-CloudFormation».

Получив доступ к AWS с привилегиями этой роли, хакеры развернули новый AWS Stack. При создании были указаны capabilities CAPABILITY_NAMED_IAM и CAPABILITY_IAM, что позволило им создать новую IAM-роль и привязать к ней политику arn:aws:iam::aws:policy/AdministratorAccess. Полный административный доступ ко всему облаку. Эскалация от украденного токена до позиции «бога» в AWS заняла менее 72 часов.

Дальнейшие действия были разрушительными. UNC6426 перебрала объекты в бакетах S3 и выкачала файлы. Были остановлены (terminated, не stopped — то есть без возможности восстановления) боевые инстансы EC2 и базы данных RDS. Расшифрованы ключи приложений. А потом — жест, похожий на подпись: все внутренние GitHub-репозитории жертвы были переименованы по шаблону /s1ngularity-repository-[случайные символы] и переведены в публичный режим.

Отчёт Google содержит и рекомендации по защите от подобных сценариев. Первая и, пожалуй, наиболее недооценённая: использовать пакетные менеджеры, которые блокируют скрипты postinstall, или применять песочницы. Именно postinstall-скрипт стал механизмом запуска QUIETVAULT, и его блокировка оборвала бы всю цепочку в самом начале.

Второй пласт рекомендаций касается управления доступом. Принцип наименьших привилегий (PoLP) нужно применять к сервисным учётным записям CI/CD и ролям, связанным через OIDC. Роль «Actions-CloudFormation» с правами, достаточными для создания IAM-ролей администратора, — это приглашение к катастрофе. Токены доступа должны быть гранулярными: короткие сроки жизни, ограничение по конкретным репозиториям. «Стоящие» привилегии (standing privileges) для высокорисковых действий вроде создания администраторских ролей нужно убирать совсем.

Мониторинг аномальной активности IAM тоже упоминается, хотя здесь есть ощущение некоторого запоздания: когда кто-то уже создаёт новый стек с CAPABILITY_NAMED_IAM, у вас остаются минуты, не часы. Наконец, отчёт отдельно выделяет проблему «теневого ИИ» (Shadow AI). QUIETVAULT использовал промпты на естественном языке к уже установленной LLM, и такие запросы проходят мимо стандартных сетевых и endpoint-детекторов, заточенных под жёстко закодированные паттерны. Это принципиально новый вектор, к которому большинство корпоративных SOC пока не готовы.

Случай с UNC6426 показывает, как единственный скомпрометированный пакет может за считанные дни привести к полному уничтожению инфраструктуры. Цепочка «npm → GitHub PAT → CI/CD секреты → OIDC trust → AWS admin» выглядит длинной, но каждый её шаг технически тривиален, если предыдущий удался. Атакующие не ломали криптографию и не эксплуатировали zero-day в AWS. Они просто шли по дорожке из избыточных привилегий и доверительных связей между сервисами, которые никто не потрудился ограничить.


Новое на сайте

20868Уязвимости Plex открыли путь майнерам и Linux-бэкдору 20867Взлом OpenCode Console: под угрозой могли оказаться ключи OpenAI, Anthropic и Google 20866Rank Math PRO: заражённое обновление оставило на сайтах самовосстанавливающийся бэкдор 20865Как исследовательские модели OpenAI обходили ограничения и присваивали чужие данные 20864Атака на BeyondTrust: шпионская группа получила доступ к серверам поддержки 20863Как пакет imgdecode превращает npm-зависимость в загрузчик вредоносного кода? 20862Как PEERSTITCH обходит проверки VPN-сессий FortiOS? 20861Что происходит, когда ИИ-агент выходит за пределы тестовой среды? 20860Как 37-летняя ошибка открыла путь к root в OpenBSD 7.9? 20859ИИ-модели для SOC: точный ответ зависит от улик 20858Как одна учётная запись ConnectWise открыла доступ к 173 арендаторам Microsoft 365? 20857Пять минут до заражения: как подменили обновления AOMEI Backupper 20856Ловушка под видом регистрации: как UAT-11985 крадёт аккаунты Google 20855Может ли виртуальная машина прочитать память хоста? 20854Как дешёвые Android-смартфоны превращаются в чужие прокси?
Ссылка