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. Права на отчет принадлежат его владельцу.

Ознакомиться подробнее с отчетом можно по ссылке.

Технологии киберугроз
Автор: Технологии киберугроз
Технологии киберугроз – технологическая компания, специализирующаяся на решениях по анализу угроз для предприятий любого размера. Мы собираем, нормализуем, обогащаем информацию о киберугрозах со всего мира. Нашими источниками являют более 260 открытых фидов, более 100 открытых поставщиков Threat Intelligence-отчетов, открытые online sandbox, социальные сети и репозитории GitHub. Мы также предоставляем ряд сервисов по: семантическом анализу Threat Intelligence-отчетов и приведения их в машиночитаемый формат STIX 2.1, проверки IoC на потенциальные ложноположительные сработки, а также получению WHOIS-записей для доменных имен.
Комментарии: