Крупная атака на цепочку поставок затронула популярный пакет npm Tinycolor

information security

Экосистема npm столкнулась с масштабной цепочкой поставок, в результате которой было скомпрометировано более 40 пакетов, включая популярную библиотеку @ctrl/tinycolor с еженедельным числом загрузок, превышающим 2,2 миллиона. Атака была обнаружена исследователем Даниэлем дос Сантосом Перейрой, который обратил внимание на подозрительное поведение в последней версии пакета.

Описание

Злоумышленники внедрили в обновленные версии пакетов специальную функцию NpmModule.updatePackage, которая автоматически загружает архив пакета, модифицирует файл package.json, внедряет вредоносный скрипт bundle.js, переупаковывает архив и повторно публикует его. Этот механизм позволяет автоматически троянизировать зависимые пакеты без ведома их мантейнеров.

Среди подтвержденных скомпрометированных пакетов - [email protected], @ctrl/[email protected], @ctrl/[email protected], @4.1.2, [email protected] и многие другие, принадлежащие разным мантейнерам. Это указывает на скоординированную кампанию, а не на единичный инцидент.

Вредоносный скрипт bundle.js выполняет автоматическую загрузку и запуск легитимного сканера секретов TruffleHog, который проводит поиск токенов и учетных данных в облачных сервисах на хосте. Скрипт проверяет и использует учетные данные разработчиков и CI, создает workflow в GitHub Actions внутри репозиториев и передает собранные данные на внешний webhook-сервер.

Анализ кода показывает, что скрипт активно ищет переменные окружения, включая GITHUB_TOKEN, NPM_TOKEN, AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY. Для проверки валидности токенов используются запросы к API npm и GitHub. Кроме того, скрипт пытается получить метаданные из облачных сред AWS и GCP, что может привести к утечке временных учетных данных.

Механизм создания рабочих процессов в GitHub Actions представляет особую опасность. После внедрения в репозиторий такой рабочий процесс продолжает функционировать в рамках CI/CD, позволяя атакующим получать постоянный доступ к секретной информации и артефактам. Собранные данные передаются с помощью кодирования base64 в указанный веб-хук, а также могут быть опубликованы в общедоступных репозиториях GitHub, созданных под учетной записью жертвы.

Компания Socket, которая также автоматически обнаружила угрозу, продолжает анализ нагрузки и методов распространения. На текущий момент рекомендуется проверить проекты на наличие указанных версий пакетов, отозвать все возможные токены и провести аудит используемых зависимостей.

По состоянию на 16 сентября 2025 года кампания расширилась и затрагивает почти 500 пакетов npm, включая некоторые открытые пакеты CrowdStrike. Актуальную информацию и рекомендации по мерам защиты можно найти в блоге Socket.dev.

Этот инцидент в очередной раз демонстрирует уязвимость современных экосистем открытого ПО и критическую важность контроля целостности зависимостей в процессах разработки.

Индикаторы компрометации

URLs

  • https://webhook.site/bb8ca5f6-4175-45d2-b042-fc9ebb8170b7

SHA256

  • 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
Комментарии: 0