Угроза цепочке поставок: 26 вредоносных пакетов npm используют стеганографию в Pastebin для кражи данных разработчиков

information security

В конце февраля 2026 года специалисты по безопасности обнаружили новую широкомасштабную атаку на экосистему npm, нацеленную непосредственно на разработчиков программного обеспечения. Кампания, получившая название «StegaBin», использовала 26 вредоносных пакетов, которые маскировались под популярные библиотеки, чтобы внедрить многоступенчатую программу-шпион. Её ключевой особенностью стало применение стеганографии для скрытия инфраструктуры управления на публичном сервисе Pastebin, что значительно усложнило обнаружение. Исследователи связывают эту активность с северокорейской группировкой, известной как FAMOUS CHOLLIMA (также связанной с Lazarus Group), что указывает на высокий уровень профессионализма и целенаправленность атаки на криптовалютный и веб3-сектор.

Описание

Инцидент начался 25-26 февраля, когда в репозиторий npm было загружено 26 пакетов с опечатками в названиях (typosquatting), имитирующих такие востребованные библиотеки, как "express", "lodash", "jsonwebtoken" и "ethers". Все они содержали один и тот же вредоносный файл, который активировался автоматически в момент установки пакета командой "npm install". Однако вместо прямой загрузки вредоносного кода скрипт обращался к трём публичным заметкам на Pastebin, содержащим, на первый взгляд, безобидные эссе по информатике. Как подробно описано в техническом разборе исследователя, реальные адреса командных серверов (C2) были скрыты с помощью символьной стеганографии: злоумышленники заменили определённые символы в тексте через равные промежутки, закодировав таким образом список из 31 домена на платформе Vercel.

После расшифровки списка вредоносная нагрузка определяла операционную систему жертвы и загружала соответствующую платформе оболочку, которая, в свою очередь, разворачивала полноценный троян удалённого доступа (RAT). Этот троян подключался к центральному серверу управления и автоматически загружал набор из девяти модулей для кражи конфиденциальной информации. Комплексность этого набора впечатляет: он был специально разработан для тотального сбора данных из среды разработчика. Модули крали конфигурацию и историю из редактора VSCode, SSH-ключи, данные из локальных Git-репозиториев, учетные данные браузеров, содержимое буфера обмена, а также автоматически сканировали файловую систему на наличие секретов с помощью легитимного инструмента TruffleHog.

Особого внимания заслуживает модуль обеспечения постоянного присутствия в системе (persistence) через VSCode. Он модифицировал конфигурационный файл редактора "tasks.json", добавляя задачу, которая автоматически запускается при каждом открытии проекта. Сама команда для запуска вредоносного скрипта была скрыта с помощью 186 пробелов в начале строки, что делало её невидимой в стандартном интерфейсе просмотра задач редактора. Это изощрённый метод, гарантирующий, что инфекция сохранится даже после перезагрузки системы и повторного запуска рабочей среды. Другие модули демонстрируют не менее высокий уровень технической изощрённости. Например, кейлоггер для Windows использовал низкоуровневые системные хуки, а модуль кражи данных из браузеров применял многослойное шифрование и обфускацию на основе XOR и кодирования Base85.

Анализ тактик, техник и процедур (TTP), а также паттернов инфраструктуры указывает на связь кампании с группировкой FAMOUS CHOLLIMA, которая долгое время ассоциируется с северокорейской программой кибершпионажа и финансовых хищений. Использование тем, связанных с разработкой смарт-контрактов (например, упоминание фреймворка Hardhat в артефактах), прямо указывает на целевой профиль жертв - это разработчики в области блокчейна и криптовалют. Кампания «StegaBin» представляет собой эволюцию предыдущих атак, отслеживаемых под кодовым названием «Contagious Interview». Если ранее злоумышленники использовали более прямолинейные методы, то теперь они внедрили сложные механизмы обфускации и стеганографии, что говорит об их стремлении обойти как автоматические системы защиты, так и ручной анализ исследователей.

Для организаций и отдельных разработчиков этот инцидент служит суровым напоминанием о критически важных мерах безопасности. Во-первых, необходимо крайне внимательно относиться к установке зависимостей, всегда проверяя точное написание имени пакета и его репутацию. Во-вторых, следует использовать инструменты статического анализа безопасности приложений (SAST) и мониторинга зависимостей (SCA), способные обнаруживать подозрительное поведение, такое как запуск скриптов при установке или наличие обфусцированного кода. В-третьих, важно применять принцип наименьших привилегий в рабочих средах и хранить секреты (API-ключи, SSH-ключи) в специализированных менеджерах, а не в виде plaintext-файлов в проектах. Обнаружение подобных угроз, как отмечается в [отчёте компании Socket], стало возможным благодаря системам искусственного интеллекта, которые анализируют поведение пакетов, а не только статические сигнатуры. Именно такие превентивные подходы, сочетающие технологические решения и повышение осведомлённости разработчиков, являются ключом к защите от всё более изощрённых атак на цепочку поставок программного обеспечения.

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

IPv4 Port Combinations

103.106.67.63:1244

Domains

atlasnode-app204.vercel.app

atlasnode-ext957.vercel.app

brightlaunch-app615.vercel.app

brightlaunch-ext742.vercel.app

cleverstack-app998.vercel.app

cleverstack-ext301.vercel.app

cloudharbor-app239.vercel.app

cloudharbor-ext664.vercel.app

ext-checkdin.vercel.app

fusionlayer-app463.vercel.app

fusionlayer-ext807.vercel.app

logicfield-app681.vercel.app

logicfield-ext432.vercel.app

neuraldock-app734.vercel.app

neuraldock-ext126.vercel.app

openmatrix-app882.vercel.app

openmatrix-ext539.vercel.app

orbitstack-app318.vercel.app

orbitstack-ext592.vercel.app

primevector-app920.vercel.app

primevector-ext483.vercel.app

quantapath-app914.vercel.app

quantapath-ext275.vercel.app

signalbase-app845.vercel.app

signalbase-ext369.vercel.app

sparkforge-app790.vercel.app

sparkforge-ext518.vercel.app

visiondock-app157.vercel.app

visiondock-ext648.vercel.app

zenithflow-app877.vercel.app

zenithflow-ext156.vercel.app

URLs

  • https://pastebin.com/0ec7i68M
  • https://pastebin.com/CJ5PrtNk
  • https://pastebin.com/DjDCxcsT

SHA256

  • 1b15f73054350c6ab42f6e1d2ce4d84d7c56821db699e4ec484541263dfcb636
  • 4e6a7bf3964fc0e3a655f062330c76b4876dcfac47d213e4c1f0ec3fe6ef9e12
  • 714f890308d2cfebb2ed3ae873697408372639260bb682ea4cfbfffec98b8add
  • 78c8b9044f6029280d28a1f62a4414a22e870fc27e3cc4894bd077d17f2ad8b4
  • 978e8f161da04e00117a695aa59452dce89b5247db93ab7cedcaea3c1f26b8c8
  • ba3e520b9727e893cf07b0c1a6e6ce1a62e8e9bf28b5c771af4fdf01f9bd9ed4
  • ce80100a383730822221f3ce769ea5ccda0c583654cc7c119ecc50bfbb4203b9
  • da1775d0fbe99fbc35b6f0b4a3a3cb84da3ca1b2c1bbac0842317f6f804e30a4
  • ddbb527be0f40cd13eab08e3e418e36e86e4f1f1458cf84cfee29490beacf3a6

Malicious npm Packages

  • formmiderable@3.5.7
  • bubble-core@6.26.2
  • mqttoken@5.40.2
  • windowston@3.19.2
  • bee-quarl@2.1.2
  • kafkajs-lint@2.21.3
  • jslint-config@10.22.2
  • zoddle@4.4.2
  • daytonjs@1.11.20
  • corstoken@2.14.7
  • jsnwebapptoken@8.40.2
  • iosysredis@5.13.2
  • sequelization@6.40.2
  • undicy-lint@7.23.1
  • expressjs-lint@5.3.2
  • loadash-lint@4.17.24
  • promanage@6.0.21
  • vitetest-lint@4.1.21
  • prism-lint@7.4.2
  • fastify-lint@5.8.0
  • typoriem@0.4.17
  • argonist@0.41.0
  • uuindex@13.1.0
  • bcryptance@6.5.2
  • hapi-lint@19.1.2
  • ether-lint@5.9.4
Комментарии: 0