Исследователи нашли 24 пакета npm, которые использовались не для атаки на разработчиков при установке, а как бесплатная площадка для фишинга через npm. В зеркалах вроде unpkg такие пакеты превращались в рабочие страницы с поддельной CAPTCHA от Cloudflare, а для русскоязычных команд это еще один сигнал: доверять домену, CDN и знакомому интерфейсу уже недостаточно.
О кампании сообщает The Hacker News со ссылкой на исследователей OX Security Моше Симан Това Бустана и Виталия Чепурко. По их данным, злоумышленники загрузили в npm не трояны в привычном смысле, а обычные HTML-страницы с JavaScript. Если такой пакет просто скачать, ничего не случится. Вся схема строится иначе: npm-реестр и его зеркала используются как «чистое» и валидное хранилище, где вредоносная страница лежит на домене, который у пользователя не вызывает рефлекторного недоверия.
Механика простая и потому неприятная. После публикации пакета его содержимое подхватывает зеркало unpkg, и файл вроде index.html становится доступен по прямому URL. В результате ссылка на домене unpkg открывает уже не архив с кодом, а полностью отрисованную фальшивую страницу проверки Cloudflare. Дальше жертву перебрасывают на внешнюю инфраструктуру атакующего. Исследователи отдельно подчеркивают: цель кампании не заражение тех, кто ставит пакет, а эксплуатация репутации npm и его CDN-экосистемы для социальной инженерии, ClickFix-сценариев и кражи учетных данных.
В списке 24 пакета фигурируют, в частности, bgzxcuite2, prezdentkxheiw, egair0810, passport811, ndmxchdjxn2, @worrisome/reutil и еще ряд имен, выглядящих как шум или случайный набор символов. Часть из них на момент публикации еще оставалась доступной для скачивания. Это важная деталь: даже если исходный пакет потом удалят из официального каталога, зеркала могут хранить его дольше. То есть проблема не сводится к модерации npm как таковой. Пакет может исчезнуть из витрины, но ссылка на зеркало еще какое-то время будет жить своей жизнью.
Почему схема работает
Главный трюк здесь не в коде, а в инфраструктуре. Пользователь видит доверенный домен, знакомую страницу «проверки», а дальше срабатывает обычная человеческая автоматика: если просит пройти CAPTCHA, значит, наверное, так надо. Внутри HTML зашита логика показа фальшивой проверки и JavaScript, который обращается к удаленному серверу за следующим шагом. На ранних этапах кампании запрос уходил на тайпсквот-домен, имитировавший страницу входа Microsoft: login[.]microsofte[.]live. После того как этот адрес попал в блок-лист Safe Browsing у Google Chrome, оператор кампании не стал спорить с браузером и сменил тактику.
Следующим звеном стал KeyVal, публичный сервис хранения пар ключ-значение с REST API. По сути, злоумышленник превратил легитимный сервис в так называемый dead drop resolver: HTML-страница получает оттуда значение, декодирует его и уже потом перенаправляет пользователя дальше. На момент исследования эта удаленная логика вела на настоящий сайт ChatGPT, а не на страницу доставки вредоносного файла или форму кражи логина. Но смысл тут как раз в гибкости: если сегодня конечная точка выглядит безобидно, завтра ее можно заменить на ClickFix-страницу, фишинговый лендинг или любой другой редирект, не меняя сам файл, который уже разошелся по зеркалам.
Для отрасли это неприятный, но логичный сдвиг. Несколько лет назад обсуждали в основном вредоносные зависимости, постинсталляционные скрипты и обфусцированный JavaScript внутри пакетов. Теперь акцент уходит в сторону злоупотребления доверенной инфраструктурой. npm, CDN-зеркала, публичные API и облачные сервисы используются не как канал прямого заражения, а как дешевые кирпичи для сборки фишинговой цепочки. Такой подход сложнее отсечь по простому правилу «не ставь странные пакеты», потому что жертвой может стать вообще не разработчик, а любой человек, который просто открыл присланную ссылку.
И это не единичный эпизод. The Hacker News напоминает о кампании Beamglea, которую в октябре 2025 года описала компания Socket. Тогда речь шла о 175 npm-пакетах, использовавших CDN unpkg.com для размещения скриптов-редиректоров на страницы сбора учетных данных. Нынешний кейс меньше по масштабу, но показывает ту же тенденцию: атакующие быстро понимают, какие площадки дают им легитимный внешний вид, долгий срок жизни артефактов и минимальные издержки. Если это работает хотя бы несколько дней, экономика атаки уже сходится.
Для разработчиков и IT-команд вывод довольно приземленный. Во-первых, зеркало пакетов и доверенный CDN-домен больше нельзя автоматически считать безопасным контентом. Во-вторых, корпоративные фильтры и браузерные политики должны смотреть не только на репутацию домена, но и на поведение страницы: неожиданные CAPTCHA, копирование команд в буфер, цепочки редиректов, обращения к внешним key-value сервисам. В-третьих, security awareness для сотрудников стоит обновлять под новую реальность: фишинг через npm теперь может маскироваться под инфраструктуру, которой инженеры пользуются каждый день. Старое правило «не открывай странные вложения» уже слишком уютное для 2026 года.
Самый неудобный вопрос здесь не в том, сколько еще таких пакетов найдут, а в другом: где заканчивается обычный open source-хостинг и начинается инфраструктура атаки, которую платформы обязаны чистить превентивно. Пока злоумышленники учатся прятать фишинг через npm, зеркала и сторонние API, защитникам придется проверять не только код зависимостей, но и то, как доверенная экосистема ведет себя как веб-площадка.