Вредоносная версия пакета intercom-client атакует цепочку поставок Node.js: кража секретов Kubernetes и Vault

information security

Разработчики, использующие официальный SDK для Node.js под названием intercom-client, столкнулись с серьёзной угрозой для цепочки поставок. Специалисты компании Socket Threat Research обнаружили и подтвердили, что версия 7.0.4 этого пакета является вредоносной. Речь идёт о компрометации популярного модуля, который предназначен для работы с API (программным интерфейсом) платформы Intercom.

Описание

Хотя intercom-client не входит в число крупнейших пакетов реестра npm (менеджера пакетов Node.js), его востребованность высока. Агрегаторы пакетов фиксируют около 360 тысяч загрузок в неделю, а в самом npm указано более ста зависимых проектов. Реальное распространение может быть гораздо шире, так как библиотеку часто устанавливают в бэкенд-сервисы, окружения разработчиков и конвейеры CI/CD (процессов непрерывной интеграции и доставки), интегрированные с API Intercom.

Два вредоносных файла и скрытый механизм

Версия 7.0.4 содержит два файла, которых не было в предыдущем релизе 7.0.3, выпущенном 88 днями ранее. Это говорит о том, что вредоносный код был внедрён именно в последнюю версию. Первый файл - setup.mjs, который запускается через preinstall-хук npm во время установки пакета. Скрипт загружает и выполняет непроверенный бинарный файл Bun из репозитория GitHub без каких-либо проверок целостности.

Второй файл - router_runtime.js, размером 11,7 мегабайта. Он сильно обфусцирован (запутан) и предназначен для сбора учётных данных из переменных окружения и локальных файлов. В первую очередь злоумышленников интересуют секреты Kubernetes (системы оркестрации контейнеров) и Vault (инструмента для управления секретами и токенами). Собранную информацию код шифрует и отправляет через API GitHub, используя сторонний репозиторий как канал эксфильтрации.

Почему это похоже на другие атаки

Описание атаки во многом повторяет схему, использованную в пакете lightning версии 2.6.2, обнаруженную в реестре PyPI несколькими часами ранее. Кроме того, на прошлой неделе Socket сообщал о похожей кампании, затронувшей SAP CAP и Cloud MTA из реестра npm. Во всех этих случаях злоумышленники внедряли preinstall-скрипт, который скачивал ZIP-архив с Bun из GitHub Releases, распаковывал его и немедленно запускал бинарник для выполнения внедрённого JavaScript-кода. Все эти кампании использовали почти идентичный файл router_runtime.js размером около 11,7 МБ, нацеливались на окружения разработчиков и CI/CD, а также злоупотребляли инфраструктурой GitHub для вывода похищенных данных.

Специалисты связывают атаку на SAP CAP с группой TeamPCP на основании технических деталей: специфических шаблонов реализации полезной нагрузки, методов эксфильтрации через GitHub, сбора учётных данных в средах разработки и CI/CD, а также сходства с более ранними инцидентами, затронувшими Checkmarx, Bitwarden, Telnyx, LiteLLM и Aqua Security Trivy. Пока неясно, является ли компрометация intercom-client частью той же кампании, прямым продолжением или копией с использованием аналогичного инструментария.

Подозрительная активность на GitHub

Параллельно с публикацией вредоносного пакета была замечена активность учётной записи GitHub под именем nhur. В течение примерно 47 минут 30 апреля 2026 года этот пользователь создал три новых публичных репозитория со схожими названиями: ghola-melange-, mentat-melange- и powindah-sietch-*. Все они получили одинаковые описания "A Mini Shai-Hulud has Appeared" и содержали минимальное количество файлов. Тот же аккаунт выполнил операции записи в 11 репозиториях организации Intercom, где имел приватное членство и доступ. Среди этих действий - создание веток с именами, напоминающими бота Dependabot, но с ошибкой (например, dependabout/github_actions/...), а также коммиты, внедряющие новые рабочие процессы GitHub Actions и изменяющие существующие конфигурационные файлы CI.

Эти новые workflow-файлы были настроены на доступ к секретам репозитория через конструкцию ${{ toJSON(secrets) }} и запись их в файлы, которые затем формировались как артефакты GitHub Actions (сохраняемые результаты сборки). В как минимум одном репозитории (intercom-node) после первоначальных коммитов была зафиксирована активность от имени бота GitHub Actions - появились дополнительные файлы в каталогах .claude/ и .vscode/. Всё это указывает на червя цепочки поставок, известного под именем Shai-Hulud, и его последующие вариации.

Компрометация учётной записи и автоматическая публикация

Специалисты подтвердили, что учётная запись nhur была скомпрометирована, а вредоносный пакет intercom-client@7.0.4 был опубликован через удалённую ветку, которая запускала автоматический CI-процесс публикации. В самом репозитории intercom/intercom-node зафиксирован коммит от nhur, удалявший файл .github/workflows/ci.yml и добавлявший workflow с именем dependabot/fix, настроенный на выполнение при пуше в одноимённую ветку.

Что делать пострадавшим

Команда Socket рекомендует немедленно удалить пакет intercom-client@7.0.4, откатиться на заведомо безопасную версию 7.0.3, сменить все потенциально скомпрометированные учётные данные и провести аудит систем, где мог быть установлен этот модуль. Особое внимание следует уделить окружениям, содержащим доступ к Kubernetes, Vault, облачным провайдерам и токенам GitHub. Вредоносное поведение запускается уже на этапе установки, поэтому даже если пакет не импортировался напрямую в код приложения, инфраструктура могла быть заражена.

Это развивающаяся история. Эксперты продолжают анализировать масштаб инцидента, статус исправлений и реакцию мейнтейнеров пакета, реестра npm и платформы GitHub. Подробности кампании Mini Shai-Hulud, включая образцы артефактов и методы обнаружения, публикуются на [специальной странице Socket] по мере поступления новой информации.

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

URLs

  • http://169.254.169.254
  • http://169.254.170.2
  • http://169.254.170.23
  • http://metadata.google.internal

MD5

  • 598f8a39b021cf56d33432b6f67f7660
  • 9bd71891febd47b6a7d9ef1f6120662a

SHA1

  • 0cf67457352cf82dea4189d9dbd41b8f519dbb81
  • 7c8bf63a9ba9169d5237acfc683f1bd004349341

SHA256

  • 5ae8b2343e97cc3b2c945ec34318b63f27fa2db1e3d8fbaa78c298aa63db52ed
  • fe64699649591948d6f960705caac86fe99600bf76e3eae29b4517705a58f0e2

Public RSA Keys

  • MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAm1ThuFsx+rWD5RFI8A7B rfqrCQjmy+cqqbWew+a2XhtU7nsJebqZfj8Evc6NLXOoMc1arQtWjV9r6bILrLyh aL0WuRERGvAl/9/cPRwYotUvkQKvwMZHruaCCqMGVF6XndpJQ8ejOm5AVsV6MNhl VepMDfBhuvtM6E0/JrFOd304stkl+wfVyTz2Kd2ehy8+o1BBhpV6v6sShF5CZCwZ qgw/V4wYBgLHx1RHrraPu7m/so/wEWpmrQ8qYsJxd9Nmrjfcd8hJy5mpcQfhY03JiVOtzztfnHaa F7js9FTPWs9hhJbEFik6eHDcRCH6VXQ86/ieRxVdS3aSf/bY8KC
  • MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA55aMQwvJuy++UvFmWrPW agKRz35hwLlAKUrYjC0Bvqu/1C9uDeVGxNrfkUE8sm3motzVBwJAHl9iOrcepqt6 2kckAbxV9T7wCarVjb+iQRV/gPHlbMJf/cRttJXfU5TwbwFuWtuusxQufAdVveeg qprcOwJ5OBZoz5XeloyRDUVGWA4viZ0TNgpne3RXioJekEWSadSw0pwwc2azIzHB EBzhx5ehCkNm31xel/TXxPlAhl5QTBu9j2VOjNMEc6sDMhr3qRxL0eX5B/HJ2Dt9 CDYJ24F9lJLYVuGkO77UKLaiacFUHSUGQxnhMQ9dr3c4/uPm/I2APNinde2HzY/L
Комментарии: 0