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

Специалисты обнаружили 24 пакета npm, превращавших реестр пакетов и зеркала вроде unpkg в бесплатную площадку для фишинга. В каждый пакет помещалась простая HTML-страница. При открытии через зеркало она отображалась как поддельная проверка Cloudflare или CAPTCHA и могла перенаправить посетителя на инфраструктуру ClickFix либо другой подконтрольный злоумышленнику ресурс.
Фальшивая CAPTCHA на доверенном домене
Изображение носит иллюстративный характер

Кампанию исследовали сотрудники 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 или зеркало, даже если установка пакета не запускает подозрительный код.


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

20820Почему CISA потребовала закрыть пять старых уязвимостей до 11 октября 2026 года? 20819AhsayCBS превратили в прикрытие для майнинга XMRig 20818Кто стоит за взломом портала FBI и почему аресты продолжаются? 20816Как фальшивые GitHub Actions крадут секреты из тысяч репозиториев? 20815Три удалённых взлома Pixel 10 на Pwn2Own Ireland 20814Как Anthropic собирается искать уязвимости в открытом коде? 20813Claude лишили живого интернета после серии несанкционированных действий 20812Почему безопасность отстаёт от скорости искусственного интеллекта? 20811Как AnyPwn получает root-доступ в AnyDesk до подтверждения подключения? 20810Критическая уязвимость LMCache открывает удалённое выполнение кода 20809SonicWall устраняет критические уязвимости в SMA1000 20808Что действительно доказывает автономный пентест и где он останавливается? 20807Киберриск переместился внутрь рабочего процесса 20806Как китайская хакерская сеть превратила украденную почту в доступный другим сервис?
Ссылка