Крупнейшая атака на цепочку поставок npm: фишинг привёл к компрометации 18 пакетов с 2 млрд загрузок в неделю

phishing

В сентябре 2025 года экосистема JavaScript столкнулась с беспрецедентным инцидентом безопасности, который уже называют крупнейшей атакой на цепочку поставок в истории npm. В результате сложной фишинг-атаки злоумышленники получили доступ к учётной записи доверенного сопровождающего и внедрили вредоносный код, предназначенный для кражи криптовалюты, в 18 фундаментальных пакетов npm. Эти пакеты совокупно насчитывали более 2 миллиардов еженедельных загрузок, затронув миллионы приложений по всему миру - от личных проектов до корпоративных систем.

Описание

Инцидент начался 8 сентября, когда Джош Джунон, известный сопровождающий открытого кода под псевдонимом Qix, получил фишинговое письмо, маскирующееся под официальное уведомление службы поддержки npm.

Джош Джунон пишет об инциденте

Письмо, отправленное с адреса [email protected], предупреждало о блокировке учётной записи, если в течение 48 часов не будут обновлены данные двухфакторной аутентификации.

Фишинговое письмо

Домен npmjs.help был зарегистрирован всего за три дня до атаки. В состоянии спешки Джунон перешёл по ссылке и ввёл свои учётные данные, что предоставило злоумышленникам полный доступ к его аккаунту npm. В течение нескольких минут они начали публиковать вредоносные версии его пакетов.

Среди скомпрометированных пакетов оказались ключевые библиотеки экосистемы JavaScript, включая debug (357 миллионов загрузок в неделю), chalk (300 миллионов), ansi-styles (371 миллион) и supports-color (287 миллионов). Эти пакеты глубоко интегрированы в тысячи других модулей, что создало огромный радиус воздействия атаки.

Внедрённый вредоносный код был нацелен на браузеры и разработан для кражи криптовалюты двумя основными способами: пассивной подменой адресов и активным перехватом транзакций. Программа перехватывала такие функции браузера, как fetch, XMLHttpRequest и window.ethereum, сканировала сетевой трафик на наличие адресов криптовалютных кошельков и подменяла их на контролируемые злоумышленниками. Для маскировки использовались визуально похожие строки, что затрудняло обнаружение подмены. В случае активного перехвата вредоносный код изменял адрес назначения в реальном времени непосредственно перед подписанием транзакции, при этом пользователю продолжал отображаться оригинальный адрес.

Анализ кода показал использование алгоритма расстояния Левенштейна для выбора адресов, максимально похожих на оригинальные. Атака затронула такие криптовалюты, как Bitcoin, Ethereum, Tron, Litecoin и Bitcoin Cash.

Обнаружение атаки произошло чрезвычайно быстро - компания Aikido Security выявила аномалию в течение пяти минут после публикации первого вредоносного пакета. Системы мониторинга зафиксировали необычное поведение в процессах сборки, включая ошибки ReferenceError, вызванные попытками выполнения браузерного кода в среде Node.js. В ответ npm начала удалять скомпрометированные версии пакетов, а такие платформы, как Vercel, идентифицировали 76 проектов, использовавших вредоносные зависимости, и полностью очистили их кэши сборки.

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

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

IPv4

  • 185.7.81.108

Domains

  • npmjs.help

URLs

  • http://npmjs.help/
  • http://[email protected]/
  • https://npmjs.help/
  • https://uixie.npmjs.help/
  • https://www.npmjs.help/

Emails

Комментарии: 0