Фальшивая CAPTCHA на доверенном домене

Специалисты обнаружили 24 пакета npm, превращавших реестр пакетов и зеркала вроде unpkg в бесплатную площадку для фишинга. В каждый пакет помещалась простая HTML-страница. При открытии через зеркало она отображалась как поддельная проверка Cloudflare или CAPTCHA и могла перенаправить посетителя на инфраструктуру ClickFix либо другой подконтрольный злоумышленнику ресурс.
Кампанию исследовали сотрудники OX Security Моше Симан Тов Бустан (Moshe Siman Tov Bustan) и Виталий Чепурко (Vitalii Chepurko). По их оценке, скачивание такого пакета само по себе необязательно причиняло вред: основной целью были не разработчики, устанавливающие зависимости. npm использовался как проверенное хранилище, а его зеркала и сети доставки контента давали готовый веб-хостинг на доменах с хорошей репутацией. Внутри каждого пакета находилась всего одна вредоносная или вводящая в заблуждение HTML-страница.
В кампанию вошли пакеты bgzxcuite2, prezdentkxheiw, egair0810, mnteckets, airdzticket, egypt0811, passport811, vxhjkseuiaqkb, ndmushdkeqe, ndmxchdjxn2, ndmfguyhoxc3, mjsdqwocvn, m2fcsfyjkuxb, m3fdfocdoewn, @worrisome/reutil, testdgdbcsd, tesgfvbncsdbcv, mndsxcusiwlk1, mn2adskhweox, mn3sadkoiewu, mn4xcouzvhus, mbxcnsuwgs1, skxcmwuncbg2 и mobiwaefhxc3. На момент описания кампании часть из них, по имеющимся данным, всё ещё можно было скачать.
Схема начиналась с публикации пакета в npm. Затем содержимое автоматически попадало на unpkg или похожий сервис, где HTML-файл открывался уже как обычная веб-страница. Конкретное имя файла в доступных данных не указано. Человек переходил по ссылке на знакомом домене и видел поддельное окно проверки Cloudflare. Репутация npm-зеркала снижала подозрения и могла сбить с толку автоматические средства защиты, хотя сама страница не имела отношения к Cloudflare.
В HTML находились оформление фальшивой CAPTCHA, JavaScript для обращения к удалённому серверу и код, получавший либо расшифровывавший адрес конечного сайта. После взаимодействия с «проверкой» посетителя отправляли на внешний ресурс. Такая механика подходит для атак ClickFix, где пользователя обманом заставляют выполнить нежелательное действие, способное закончиться установкой вредоносной программы. Во время анализа удалённая конфигурация вела на настоящий сайт ChatGPT, но владелец кампании мог в любой момент заменить адрес на страницу кражи учётных данных, раздачи вредоносного ПО или очередной узел ClickFix.
В раннем варианте HTML обращался к домену login[.]microsofte[.]live. Он изображал страницу входа Microsoft, а подмена держалась на лишней букве «e» в слове microsofte. Позднее домен попал в блок-лист Google Chrome Safe Browsing. После блокировки злоумышленник переключился на api.keyval[.]org, принадлежащий легальному бесплатному сервису KeyVal.
KeyVal представляет собой публичное хранилище «ключ — значение»: разработчик записывает пару, а затем получает значение по ключу через REST API. В этой кампании сервис работал как dead drop resolver, или DDR, то есть удалённый указатель на следующую точку атаки. Страница запрашивала сохранённые данные, извлекала адрес перенаправления, декодировала его и переводила туда посетителя. Для смены конечного сайта не требовалось обновлять пакет npm или HTML на зеркале, хватало заменить значение в KeyVal.
У такой конструкции несколько практических преимуществ. Хостинг ничего не стоит, HTML автоматически превращается в доступную страницу, а известный домен выглядит убедительнее свежезарегистрированного фишингового адреса. Статическая часть лежит на unpkg, маршрут управляется через KeyVal, поэтому заблокированную конечную площадку можно быстро заменить. Есть и проблема с удалением: копии пакета способны сохраняться на зеркалах после исчезновения оригинала из официального реестра, оставляя вредоносную страницу доступной.
Похожую схему уже фиксировали в октябре 2025 года. Компания Socket сообщила о кампании Beamglea, охватившей 175 пакетов npm. Размещённые через сеть доставки контента сценарии перенаправляли людей на страницы сбора логинов и паролей. Кампания с 24 пакетами продолжила тот же приём: пакетный реестр использовался не ради заражения при установке, а как распределённый веб-хостинг и промежуточный узел перенаправления.
OX Security предлагает не сводить понятие вредоносного содержимого к программе, которая запускается на компьютере и сразу крадёт данные. Легальные сервисы могут хранить фишинговые страницы и полезную нагрузку, управлять переадресацией, выполнять функцию DDR и сохранять данные атакующих. Проверка npm-пакетов поэтому должна учитывать HTML, внешние запросы, закодированные адреса и поведение файлов при открытии через CDN или зеркало, даже если установка пакета не запускает подозрительный код.


Новое на сайте

Ссылка