alone5511 npm Dependency Confusion Attack

alone5511 npm Dependency Confusion Attack

TL, д-р

В период с 1 по 6 мая 2026 года один издатель npm, alone5511было добавлено восемь пакетов, не имеющих зависимостей, которые, по всей видимости, нацелены на... Microsoft / Внутренние пространства имен пакетов в стиле Azure.

В пакетах использовались такие названия, как... cosmos-explorer, ms.analytics-web, icons.generated, latency-tracking-internal, carbonite-internal и carboniteappВ нескольких версиях использовались высокие значения семантического версионирования, такие как: 99.9.0 и 99.9.13Это распространённая тактика создания путаницы в зависимостях, призванная вывести частные внутренние пакеты на более высокий уровень.

Все восемь родственных пакетов были удалены из npm издателем в период с 1 по 6 мая 2026 года. Метаданные прямого реестра подтвердили, что архивы теперь возвращают HTTP 404 от CDN npm.

Однако кластер по-прежнему имеет значение.

Полезная нагрузка в канонических образцах, carbonite-internal:99.9.0 и carboniteapp:99.9.0Запускается во время установки через preinstall Он собирает данные об отпечатке хоста и получает публичный IP-адрес машины. api.ipify.orgсоздает поддельный «РАЗВЕДЫВАТЕЛЬНЫЙ ОТЧЕТ ПРОФЕССИОНАЛЬНОГО УРОВНЯ», помечая ведущего как RCE VERIFIEDи отправляет отчет Telegram-боту через Telegram Bot API.

Система раннего оповещения о вредоносном ПО (MEW) от Xygeni Система классифицировала канонические образцы как предположительно вредоносные, присвоив им оценку выше 91/100.

Мы отслеживаем это как внутреннюю кампанию Microsoft по созданию путаницы в именах зависимостей, связанную с идентификацией хоста во время установки и утечкой данных через маяки Telegram.

Кластер: восемь пакетов, один издатель

Учётная запись издателя alone5511 использовал адрес электронной почты:

raistargaming703@gmail.com

У аккаунта не было подтвержденного адреса электронной почты, не было... SCM проверка и рейтинг репутации npm, равный 2.

Идентификатор GitHub, на который дана ссылка. alonebeast002/beastcryptТакже появился в контексте кластера.

Издатель выпустил восемь связанных пакетов в течение шести дней. Все пакеты не имели зависимостей и следовали одной и той же общей схеме: небольшой пакет, скрипт установки, идентификация хоста и отправка сообщений Telegram.

# Упаковка Вредоносная версия Создано, UTC Неопубликовано, UTC Полезная нагрузка подтверждена Установите крюк
1 космос-исследователь 1.1.3 2026-05-01T18:26Z 2026-05-01T19:01Z Предположительно, тот же издатель/кластер предварительная установка, предполагается
2 signalsdk-web 1.0.0, 10.0.0 2026-05-04T13:57Z 2026-05-04T18:51Z Предполагаемые предварительная установка, предполагается
3 ms.analytics-web 99.0.0, 99.9.13 2026-05-04T18:47Z 2026-05-05T10:07Z Предполагаемые предварительная установка, предполагается
4 иконки.сгенерированные 99.9.13 2026-05-05T10:02Z 2026-05-05T12:57Z Предполагаемые предварительная установка, предполагается
5 отслеживание задержки 99.9.0 2026-05-05T11:57Z 2026-05-05T12:57Z Предполагаемые предварительная установка, предполагается
6 latency-tracking-internal Версии удалены из записи реестра 2026-05-06T06:02Z 2026-05-06T08:35Z Предполагаемые предварительная установка, предполагается
7 carboniteapp 99.9.0 2026-05-06T05:49Z 2026-05-06T08:35Z Да, полный поток кода сканера. preinstall: node index.js
8 карбонит-внутренний 99.9.0 2026-05-06T06:14Z 2026-05-06T08:36Z Да, полный поток кода сканера. preinstall: node index.js

Общее количество вредоносных кортежей версий в кластере: 9+.

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

Почему имена важны

Названия пакетов — это самый сильный сигнал.

Они выглядят как внутренние пакеты SDK, телеметрии, генерации значков, проводника или отслеживания задержек:

cosmos-explorer
signalsdk-web
ms.analytics-web
icons.generated
latency-tracking
latency-tracking-internal
carbonite-internal
carboniteapp

Это не случайное наименование. Похоже, оно откалибровано для путаница с зависимостями.

В некоторых более поздних версиях пакетов использовались высокие номера версий:

99.0.0
99.9.0
99.9.13
10.0.0

Это важно, потому что атаки, основанные на путанице зависимостей, часто используют более высокие версии общедоступных пакетов по сравнению с внутренними пакетами из частного реестра. Если система сборки настроена неправильно, менеджер пакетов может выбрать общедоступную версию npm вместо предполагаемой внутренней.

Похоже, что издатель также со временем усиливает свое давление.

В ранних версиях пакетов использовались обычные на вид варианты, например: 1.1.3 и 1.0.0Позже посылки были перемещены в 99.x.x и 99.9.xЭтот сдвиг согласуется с предположением, что участник сети настраивает кампанию на внутреннее поведение при разрешении пакетов.

Что происходит во время установки?

Канонические образцы, carbonite-internal:99.9.0 и carboniteapp:99.9.0, объявить preinstall крюк:

 
{
  "scripts": {
    "preinstall": "node index.js"
  }
}

Это означает, что полезная нагрузка запускается до того, как npm завершит установку зависимостей.

Это самый ранний возможный момент установки. Разработчику не нужно импортировать пакет. Сборке не требуется выполнять код приложения. Достаточно самой установки.

Полезная нагрузка невелика, около 2.4 КБ, и не имеет функционального назначения, кроме отправки сигналов.

Поведение полезной нагрузки

index.js Этот файл выполняет четыре основных действия.

Во-первых, это вызывает api.ipify.org Чтобы получить публичный IP-адрес хоста:

https://api.ipify.org

Во-вторых, он собирает основные данные для идентификации хоста с помощью API операционной системы Node.js:

os.userInfo()
os.hostname()
os.platform()
os.networkInterfaces()
os.uptime()

Во-третьих, он форматирует собранные данные в многострочный отчет с текстовым заголовком:

PRO-LEVEL INTELLIGENCE REPORT

Отчет завершается следующими словами:

Status: 🟢 RCE VERIFIED

В-четвертых, он отправляет отчет в Telegram через sendTelegram(report) функция, использующая конечную точку API Telegram-бота:

https://api.telegram.org/bot<token>/sendMessage

Точный токен Telegram-бота сохраняется внутри неопубликованных архивов и должен быть доступен для восстановления из внутреннего хранилища npm.

Почему баннер «RCE VERIFIED» важен

Буквальный RCE VERIFIED Этот маркер имеет важное оперативное значение.

Встроенная вредоносная программа не развертывает бэкдор. Она не сохраняется в системе. Она не крадет учетные данные облачного сервиса напрямую. Вместо этого она подтверждает, что выполнение кода произошло во время установки пакета.

Этого достаточно для проведения кампании по проверке работоспособности системы на предмет возникновения путаницы в зависимостях.

Если злоумышленник получает сообщение в Telegram из целевой среды, он знает, что общедоступный пакет npm был разрешен и запущен на реальном хосте, в среде CI, на рабочей станции разработчика или в среде сборки.

Иными словами, вредоносная программа не просто собирает метаданные хоста. Она проверяет, можно ли использовать уязвимость в механизме разрешения пакетов целевого объекта.

Классификация Xygeni MEW

Xygeni MEW классифицировал канонические образцы как вероятно, злонамеренныйс результатом выше 91/100.

В число обнаруженных объектов вошли:

Строгость обнаружение Смысл
критический утечка конфиденциальных данных Функция req.write(data) передает отчет об отпечатке хоста в исходящий POST-запрос Telegram.
Высокий вредоносные скрипты_установки preinstall: node index.js запускает маяк во время установки.
Низкий подозрительный_запрос Обнаружение публичных IP-адресов через api.ipify.org
Низкий подозрительный_запрос Исходящая конечная точка API бота Telegram
Низкий trivial_package Этот пакет не имеет никакого значимого назначения, кроме как отправки сигнала.
Инфо перечисление чувствительных данных Перечисляются такие сведения о хосте, как время работы, информация о пользователе и имя хоста.

Оба формата carbonite-internal:99.9.0 и carboniteapp:99.9.0 имели идентичные полезные нагрузки, включая тот же идентификатор потока кода и эквивалентные по байтам скрипты установки.

Индекс проектов издателей MEW обозначил все восемь пакетов как часть одного кластера издателей/полезных нагрузок.

Почему важна модель самоотмены публикации

Все восемь родственных пакетов были удалены издательством в течение нескольких минут или часов после публикации.

Такое поведение важно.

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

Это создает две проблемы для защитников.

Во-первых, после отмены публикации общедоступные метаданные npm становятся неполными. Некоторые записи о версиях могут быть удалены или их будет сложнее восстановить.

Во-вторых, специалисты по защите, полагающиеся на текущее состояние реестра, могут пропустить пакеты, которые присутствовали в период уязвимости, но больше не могут быть установлены.

По этой причине npm должен сохранять неопубликованные архивы внутри системы для последующего анализа. Telegram-бот Токен внутри смоляных шаров может помочь определить принимающий канал и восстановить реконструкцию возможных жертв.

Индикаторы компрометации и обнаружения

Издатель и аккаунт

Поиск Значение
имя пользователя npm alone5511
npm publisher email raistargaming703@gmail.com
репутация npm 2
Адрес электронной почты подтвержден Нет
SCM проверено Нет
Указанный идентификатор GitHub alonebeast002/beastcrypt

Названия затронутых пакетов

cosmos-explorer
signalsdk-web
ms.analytics-web
icons.generated
latency-tracking
latency-tracking-internal
carbonite-internal
carboniteapp

Подозрительные шаблоны версий

10.0.0
99.0.0
99.9.0
99.9.13

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

Конечные точки сети

Тип Значение
Проверка публичного IP-адреса https://api.ipify.org
Выпускной резервуар https://api.telegram.org/bot<token>/sendMessage
Метод эксфильтрации API Telegram-бота POST

Маркеры полезной нагрузки

Найдите следующие строки в скриптах установки:

PRO-LEVEL INTELLIGENCE REPORT
Status: 🟢 RCE VERIFIED
sendTelegram(

Также обратите внимание на следующий шаблон манифеста:

{
  "scripts": {
    "preinstall": "node index.js"
  }
}

Особенно в сочетании с:

  • Нулевые зависимости
  • Миниатюрный размер упаковки
  • Внутреннее название пакета
  • Версия High SemVer
  • API для снятия отпечатков хостов
  • трафик API бота Telegram

API для идентификации хостов

В канонической полезной нагрузке используется:

os.userInfo()
os.hostname()
os.platform()
os.networkInterfaces()
os.uptime()

Оно также охватывает следующие категории лиц:

https://api.ipify.org

для получения публичного IP-адреса хоста.

Заметки об обнаружении

Несколько правил могут выявить эту кампанию и закрыть её варианты.

Во-первых, отслеживайте скрипты npm install, которые обращаются к Telegram:

api.telegram.org

Скрипт установки пакета практически никогда не должен отправлять POST-запросы в Telegram. Рассматривайте это как враждебную атаку, если нет очень четкого и проверенного исключения.

Во-вторых, флаг preinstall скрипты в крошечных пакетах без зависимостей, с именами, которые выглядят как внутренние.

Сочетание небольшого размера пакета, высокой версии семантического версионирования и внутреннего имени в стиле пространства имен является серьезным сигналом, указывающим на путаницу в зависимостях.

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

Примеры из этой группы включают:

ms.analytics-web
latency-tracking-internal
carbonite-internal
icons.generated

В-четвертых, найдите ссылки на файлы блокировки, относящиеся к восьми названиям пакетов, в системах непрерывной интеграции и на рабочих станциях разработчиков.

Поиск:

package-lock.json
yarn.lock
pnpm-lock.yaml
npm-shrinkwrap.json

Любое совпадение должно инициировать проверку на наличие ошибок, связанных с зависимостями.

Рекомендуемые действия в реестре

Информация об этом кластере уже была скрыта на момент составления отчета. Однако скрытие информации не устраняет риск.

Рекомендуемые действия на стороне npm:

  • Уточните, были ли отмены публикаций инициированы злоумышленниками в рамках очистки, а не являлись законными действиями сопровождающего проекта.
  • Приостановить или заблокировать аккаунт издателя. alone5511.
  • Добавьте издателя, адрес электронной почты, названия пакетов и маркеры полезной нагрузки в списки блокировки для случаев злоупотреблений и нарушений в цепочке поставок.
  • Сохраните неопубликованные архивы в хранилище для проведения экспертизы.
  • Извлеките токен Telegram-бота из сохраненных архивов tar.
  • По возможности используйте Telegram для определения канала приема и восстановления телеметрии потенциальной жертвы.

Контрольный список для реагирования на компромисс

Если в течение периода обнаружения какие-либо из затронутых пакетов появились в ваших файлах блокировки, журналах сборки, кэше пакетов или истории установки CI, рассматривайте это как событие выполнения, вызывающее путаницу с зависимостями.

Рекомендуемый ответ:

  • Укажите место установки пакета: локальная рабочая станция, среда непрерывной интеграции, агент сборки или образ контейнера.
  • Сохраняйте файлы блокировок, кэш npm, журналы сборки, историю командной строки и вывод менеджера пакетов.
  • Проверьте журналы исходящей сети на наличие api.telegram.org и api.ipify.org в течение периода установки.
  • Проверьте, выполнялась ли установка в среде, содержащей конфиденциальные переменные, учетные данные или доступ к внутренней сети.
  • Если хост представлял собой привилегированную рабочую станцию ​​CI или станцию ​​разработчика, необходимо выполнить ротацию токенов, доступных в среде установки.
  • Настройка параметров разрешения пакетов аудита для устранения путаницы между публичным и частным реестром.
  • Внедрить ограничение доступа к частным пакетам и закрепление в реестре.
  • Блокируйте несанкционированные общедоступные пакеты, соответствующие внутренним шаблонам именования.
  • Добавить guardrails особенно для скриптов установки preinstall, install и postinstall.

Что должны усвоить защитники

Эта кампания не представляет собой сложной с технической точки зрения задачи. Именно поэтому она и важна.

Полезная нагрузка небольшая, выполняется напрямую и легко запускается. Злоумышленнику не требуется постоянное присутствие в системе или сложное вредоносное ПО. Ему достаточно одного неправильно настроенного пути разрешения пакетов.

Реальный риск заключается в путанице зависимостей.

Пакет с привычным внутренним именем, высоким номером версии и preinstall крючок может превратить обычный npm install в маяк изнутри вашего окружения.

Для пакетов DevSecOps Командам вывод очевиден: внутренние названия пакетов — это конфиденциальная информация. Относитесь к ним как к поверхности атаки.

Сообщение отправлено в npm для обеспечения контроля на уровне учетных записей, внесения в черный список и сохранения неопубликованных архивов tarball.

sca-инструменты-программное обеспечение-композиция-анализ-инструменты
Расставьте приоритеты, устраните и защитите риски, связанные с программным обеспечением
7-дневная бесплатная пробная версия
Кредитная карта не требуется.

Защитите свою разработку и доставку программного обеспечения

с пакетом продуктов Xygeni