NPM-атака: как злоумышленники скрывают вредоносные зависимости от анализа
Компания Koi сообщила, что с августа злоумышленники начали активно использовать уязвимость в системе управления зависимостями NPM, чтобы распространять вредоносные пакеты, которые автоматически загружают зависимости из непроверенных источников. Всего было зафиксировано 126 подозрительных пакетов, скачанных более 86 000 раз, большинство из которых до сих пор остаются на платформе.
По данным компании Koi, с августа 2024 года злоумышленники активно используют уязвимость в работе репозитория NPM, чтобы распространять пакеты, украденные учетные записи. Всего было зафиксировано более 100 подозрительных пакетов, большинство из которых оставались незамеченными. Основной схемой атаки стала эксплуатация практики, позволяющей пакетам автоматически скачивать и запускать неаудированные зависимости из непроверенных источников.
Уязвимость в работе с зависимостями
В NPM существует функция, называемая Remote Dynamic Dependencies (RDD), которая предоставляет разработчикам гибкость при работе с зависимостями — библиотеками, необходимыми для корректной работы пакетов. Однако RDD работает иначе: она позволяет пакетам загружать зависимости из непроверенных источников, включая сайты, использующие небезопасный протокол HTTP.
Компания Koi отметила, что злоумышленники, действующие под кодовым названием PhantomRaven, активно используют эту особенность. Они загрузили на NPM 126 подозрительных пакетов, которые суммарно были скачаны более 86 000 раз. На момент публикации информации 80 из этих пакетов всё ещё были доступны.
Особенность уязвимости заключается в том, что загружаемые зависимости остаются невидимыми для большинства инструментов анализа кода. Это позволяет злоумышленникам маскировать свою активность, так как в отчетах отображается, что пакет содержит «0 зависимостей». Однако на деле, при установке, зависимости загружаются автоматически и считываются с серверов злоумышленников.
Механизм атаки и маскировка
По информации Koi, каждый раз, когда пакет устанавливается, зависимости загружаются «свежими» с сервера злоумышленника. Это означает, что они не кэшируются и не версионируются. Такой подход позволяет атакующим гибко управлять распределением кода. Например, они могут отправлять безобидный код исследователям безопасности, находящимся в виртуальных сетях, а уже в корпоративных сетях — вредоносные нагрузки.
Кроме того, злоумышленники используют имена пакетов, которые могут быть ошибочно сгенерированы ИИ чат-ботами. Эти имена часто появляются в запросах разработчиков, что делает их кажущимися легитимными. Это повышает вероятность их установки.
Что происходит после заражения
Вредоносные зависимости активно сканируют заражённые системы в поисках конфиденциальной информации:
- Переменные окружения, отражающие конфигурации и внутренние параметры разработчика;
- Учетные данные для GitHub, Jenkins и NPM, которые могут быть использованы для последующих атак;
- Информация о системах CI/CD (Continuous Integration/Continuous Delivery), автоматизирующих интеграцию кода.
Процесс передачи данных, как отмечено Koi, реализован с высокой степенью избыточности: используются HTTP-запросы, JSON-запросы и соединения через WebSockets.
Как защититься
Все, кто регулярно использует NPM, должны обратить внимание на список индикаторов, указанных в отчёте Koi. Эти признаки могут быть использованы для проверки, не стала ли система целью атаки PhantomRaven. Пользователям рекомендуется провести внутренние сканирования и сравнить результаты с предоставленными данными.
Интересно: Сможет ли текущая модель безопасности, ориентированная на статический анализ, адекватно реагировать на угрозы, которые маскируются через динамические, неаудированные зависимости, и при этом остаются скрытыми от большинства инструментов?

Уязвимость NPM и реальный масштаб угрозы: как скрытые зависимости меняют правила игры
Скрытые зависимости — не просто баг, а стратегия
Уязвимость в работе с динамическими зависимостями в NPM — это не просто техническая проблема, а пример более широкого системного сдвига в сфере кибербезопасности. PhantomRaven использует особенности экосистемы, которые были задуманы как удобство для разработчиков, чтобы создать канал, скрывающий вредоносные действия от большинства систем анализа.
RDD (Remote Dynamic Dependencies) позволяет пакетам динамически загружать зависимости, которые не фиксируются в конфигурации и не видны при статическом анализе. Это создаёт асинхронный, неаудированный путь, по которому злоумышленники могут внедрять код в момент установки, минуя стандартные проверки. Такие зависимости не кэшируются, не версионируются и не отслеживаются — что делает их практически невидимыми для большинства систем безопасности.
Результат — масштабная утечка данных, включая учетные данные, переменные окружения и конфигурации CI/CD. Это не случайность, а продуманная стратегия, которая эксплуатирует доверие к NPM и автоматизацию, которую используют миллионы разработчиков.
Важный нюанс: Система безопасности, ориентированная на статические проверки, не справляется с динамическими угрозами. Это не недостаток, а признак устаревания модели, которая больше не учитывает современные методы атак.
ИИ и генерация имен: как злоумышленники играют с доверием
Злоумышленники не только используют технические дыры, но и психологические. PhantomRaven генерирует имена пакетов, которые могут быть похожи на те, что предлагает ИИ-чатбот. Такие названия часто появляются в запросах разработчиков, особенно когда они ищут решения для конкретных задач. Это снижает уровень подозрительности и повышает вероятность установки вредоносного пакета.
Ключевой момент: Злоумышленники не просто проникают в системы. Они изучают поведение пользователей, включая способы генерации названий, чтобы сделать свои пакеты максимально «легитимными». Это означает, что угроза не ограничивается техническими аспектами — она затрагивает и процессы принятия решений разработчиками.
Важный нюанс: Если ИИ-инструменты будут продолжать генерировать имена пакетов без учёта рисков, они станут частью угрозы, а не инструментом защиты.
Утечки криптовалют: масштаб атаки растет
Новая информация подтверждает, что угроза распространяется и захватывает новые векторы. В сентябре 2025 года в репозитории NPM были зафиксированы атаки, при которых злоумышленники внедрили вредоносный код в более чем два десятка популярных пакетов, включая такие, как chalk и debug, используемые в тысячах проектов. Вредоносный код перехватывал транзакции с криптовалютами и заменял адреса кошельков на адреса злоумышленников. Это позволило злоумышленникам украсть криптовалюту у пользователей, не подозревающих о заражении своих систем [!].
Такой масштаб атаки демонстрирует, что угрозы в сфере NPM вышли за рамки утечек данных и угроз внутренней безопасности. Теперь они затрагивают финансовые активы. Атака затронула пакеты, используемые десятками других проектов, что позволило вредоносному коду распространиться на масштабах более двух миллиардов обновлений в неделю.
Важно понимать: Рост масштаба атак означает, что необходимо пересмотреть не только технические меры защиты, но и процессы мониторинга и анализа поведения пакетов в реальном времени.
Что дальше: как реагировать и что изменится
Для компаний, использующих NPM, важно пересмотреть подход к аудиту зависимостей. Статические сканирования и проверки больше не обеспечивают полной защиты. Нужны новые методы, включающие динамический анализ установки пакетов и мониторинг поведения зависимостей в момент запуска.
Конкретные шаги:
- Провести внутренние сканирования с использованием индикаторов, указанных в отчёте Koi.
- Обновить политики безопасности, включив динамический анализ установки пакетов.
- Установить мониторинг активности в системах CI/CD, чтобы выявлять необычные запросы или передачи данных.
- Внедрить дополнительный уровень проверки для пакетов, связанных с криптовалютными транзакциями, особенно если они используют популярные библиотеки.
Долгосрочные последствия: Эта уязвимость может стать поворотным моментом для NPM и других пакетных менеджеров. Вероятно, будут предложены новые стандарты, ограничивающие динамические зависимости или требующие их явного указания в конфигурации. Это изменит привычную практику разработки, но сделает экосистему более безопасной.
Важный нюанс: Технологии не защищают сами по себе. Без понимания, как злоумышленники используют их, любая защита — лишь иллюзия.