Trinitite: червь в npm-цепочке крадёт токены и распространяет бэкдоры
Червь в цепочке поставок под названием Trinitite скомпрометировал 10 версий пакета npm @7nohe/openapi-react-query-codegen. Этот пакет используется как генератор кода для хуков TanStack Query и имеет более 150 000 еженедельных загрузок. Вредоносные версии находились в реестре примерно 20 минут.
Запуск через binding.gyp
Первоначальное выполнение начинается через вредоносный файл binding.gyp. Когда npm запускает node-gyp, Python обрабатывает поле conditions. Выражение в этом поле позволяет выйти из песочницы Python через класс catch_warnings, получить доступ к __builtins__, импортировать os и выполнить полезную нагрузку с помощью os.system().
Нативная компиляция для атаки не требуется. Файл используется исключительно для запуска команд во время установки пакета.
Многоуровневая полезная нагрузка
Основная полезная нагрузка, 3FWCvzduYZg.js, представляет собой обфусцированный JavaScript-файл размером 5,4 МБ. Он содержит несколько уровней шифрования и обфускации.
Внешний массив целых чисел защищен операцией XOR. После расшифровки код незаметно загружает среду выполнения Bun во временный каталог. Затем Bun запускает полезную нагрузку, зашифрованную с помощью AES-128-GCM. Она содержит дополнительный обфусцированный JavaScript.
Расшифрованный код включает функции кражи учетных данных, распространения и нанесения ущерба. Вредоносная программа также пытается уклониться от анализа. Для этого она обнаруживает:
- русские системные локали;
- каталоги программного обеспечения для защиты информации;
- известные пути, используемые для анализа вредоносного ПО;
- поддельные учетные данные сканеров;
- учетные записи исследовательских групп по защите информации;
- инструменты StepSecurity.
Кража учетных данных
Trinitite ищет в переменных окружения и локальных файлах различные учетные данные, включая:
- классические и детальные персональные токены доступа GitHub;
- учетные данные GitHub Actions OIDC;
- токены npm в файле
.npmrc; - учетные данные PyPI и RubyGems;
- доступы к Azure service-principal, federated-token и managed-identity;
- учетные данные Key Vault, Resource Manager и Microsoft Graph.
Похищенные учетные данные выгружаются в контролируемые злоумышленниками репозитории GitHub. В публичной истории коммитов вредоносная программа ищет специально отформатированные зашифрованные токены.
Полученные учетные записи используются для создания репозиториев. Им присваиваются случайные комбинации имен персонажей Touhou Project и чисел.
Распространение через реестры пакетов
Червь использует украденные учетные данные реестров пакетов, чтобы находить пакеты, принадлежащие разработчикам, загружать их архивы tarball, внедрять вредоносный файл binding.gyp и полезную нагрузку, а затем публиковать новые версии.
Атака направлена на npm, PyPI и RubyGems. При публикации пакетов вредоносная программа отключает проверку сертификатов TLS.
Изменение конфигураций разработчиков
Помимо распространения через реестры пакетов, Trinitite способен внедрять бэкдоры в конфигурационные файлы разработчиков и инструментов на базе ИИ. Под угрозой находятся:
- задачи VS Code;
- хуки Claude Code;
- рабочие процессы CodeQL;
- настройки Gemini;
- правила Cursor;
- конфигурация Codex;
- плагины OpenCode.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.



