Saltar al contenido
Software Supply Chain Security

Abuso de paquetes npm para páginas CAPTCHA falsas

npm-mirrors fake CAPTCHA

Investigadores de ciberseguridad han revelado una nueva campaña que usa paquetes npm como infraestructura de phishing. La idea no es “infectar” a los desarrolladores que instalan dependencias, sino aprovechar el ecosistema de npm y, sobre todo, sus mirrors para almacenar y servir una página maliciosa de forma confiable.

En esencia, el contenido peligroso consiste en un archivo HTML dentro de los paquetes. Aunque descargar el paquete por sí solo no necesariamente “daña” el sistema, la estrategia cambia cuando el archivo se publica en dominios espejo que funcionan como un canal de distribución listo para usar.

Qué hace peligrosa la campaña con paquetes npm

Según los hallazgos, el actor de amenaza utiliza un conjunto de 24 paquetes npm para alojar una página diseñada para simular una verificación tipo CAPTCHA. El objetivo es engañar a quien abre un enlace servido desde un mirror, de modo que actúe bajo la premisa de que está pasando un control de seguridad.

El problema clave es el “contexto” en el que aparece el contenido: al ejecutarse como si fuese parte de un dominio de confianza (por ejemplo, un mirror), la página puede parecer legítima. A continuación, el flujo redirige a la víctima hacia infraestructura controlada por el atacante.

Cómo funcionan los mirrors como unpkg

La campaña se centra en servicios que reflejan el contenido de npm, en particular mirrors como unpkg. Una vez que el paquete está disponible en el mirror, el archivo index.html se convierte en una página “viva”, renderizada y accesible.

De forma práctica, un enlace con este formato —por ejemplo, unpkg[.]com/<nombre-paquete>@1.0.0/index.html— puede cargar el HTML malicioso. Al abrirse, el usuario ve una verificación falsa y, tras esa interacción, la página envía solicitudes mediante JavaScript para continuar el proceso de redirección.

El papel del HTML y el JavaScript embebido

Aunque el paquete contenga básicamente un archivo HTML, esa página incluye lógica para mostrar el prompt de verificación falsa. Además, incorpora el código necesario para comunicarse con un servidor remoto.

La primera versión observada habría dirigido la solicitud a un dominio con apariencia de suplantación de la página de inicio de sesión de Microsoft, específicamente login[.]microsofte[.]live. La intención era que la víctima terminara en una etapa de phishing, donde se pueden capturar credenciales u otra información sensible.

Respuesta a bloqueos: cambio de infraestructura

Cuando el dominio inicial fue añadido a la lista de bloqueo de Chrome Safe Browsing, el actor ajustó el enfoque. En lugar de depender del mismo punto final, la campaña habría cambiado a un proveedor de almacenamiento público de pares clave-valor: api.keyval[.]org.

Este servicio es descrito como una tienda gratuita y accesible públicamente que permite crear un par clave-valor o recuperar un valor mediante una API REST. Al usarlo, el atacante convierte el recurso legítimo en una especie de “dead drop resolver”, es decir, un mecanismo para localizar y decodificar el destino real al que será redirigida la víctima.

Cómo se decide el destino de la redirección

En el reporte, se indica que la lógica remota del sistema actualmente transfiere al usuario hacia el sitio legítimo de ChatGPT. Sin embargo, el punto de seguridad está en el diseño: esa misma lógica puede configurarse para enviar a las víctimas hacia ClickFix u otros dominios de phishing.

En otras palabras, el HTML embebido actúa como un contenedor. La elección final del destino no depende únicamente del archivo del paquete, sino de lo que esté almacenado y retornado por la infraestructura remota utilizada por el atacante.

Paquetes específicos implicados

El análisis enumera 24 paquetes npm asociados a esta campaña (algunos aún disponibles para descarga). Entre los identificados figuran: bgzxcuite2, prezdentkxheiw, egair0810, mn teckets (según el listado del informe), airdz ticket (según el listado del informe), egypt0811, passport811, vxhjkseuiaqkb, ndmushdkeqe, ndmxchdjxn2, ndmfguyhoxc3, mjsdqwocvn, m2fcsfyjkuxb, m3fdfocdoewn, @worrisome/reutil, testdgdbcsd, tesgfvbncsdbcv, mndsxcusiwlk1, mn2adskhweox, mn3sadkoiewu, mn4xcouzvhus, mbxcnsuwgs1, skxcmwuncbg2 y mobiwaefhxc3.

Esta variedad ilustra otro rasgo habitual del abuso: los atacantes no se apoyan en un único paquete, sino en un conjunto que les permite mantener flexibilidad en la distribución y el acceso a los enlaces maliciosos en mirrors.

Por qué esta táctica cambia la forma de pensar el malware

El reporte subraya que esta campaña es un ejemplo de “infraestructura abuse”: no todo ataque consiste en ejecutar código dañino dentro de la máquina de la víctima. Aquí, los paquetes npm y sus espejos funcionan como un sistema de almacenamiento y entrega.

La consecuencia es que el riesgo puede persistir incluso si el paquete es retirado del registro oficial. Los contenidos pueden seguir disponibles en mirrors y mantener enlaces operativos, lo que alarga el ciclo de exposición.

En octubre de 2025, se describió un patrón similar: un conjunto amplio de paquetes usaba redes de entrega asociadas a unpkg para montar redirecciones hacia páginas destinadas a capturar credenciales, dentro de una campaña con nombre Beamglea.

Qué pueden hacer organizaciones y usuarios

Para equipos de seguridad y desarrollo, el punto de partida es tratar el uso de paquetes npm y sus mirrors como un vector de riesgo adicional, no solo como un problema de “malware ejecutado localmente”. Revisar enlaces que provienen de mensajes no verificados o campañas de ingeniería social sigue siendo crucial.

En paralelo, es recomendable reforzar controles como:

  • Verificación de enlaces antes de abrir páginas, especialmente si prometen comprobaciones (por ejemplo, CAPTCHA).
  • Políticas de navegación y monitoreo que detecten redirecciones inusuales hacia dominios externos.
  • Higiene en la cadena de suministro, con revisiones de dependencias y límites a qué se puede instalar.
  • Atención a indicadores como URLs con dominios typosquatting o rutas que parecen pruebas de cuenta.

Para usuarios finales, la recomendación práctica es simple: si una “verificación” aparece fuera de un flujo esperado (por ejemplo, tras un enlace sospechoso), es mejor no completar la acción y reportar el intento.

Conclusión

La campaña descrita demuestra que los paquetes npm pueden usarse como una plataforma de entrega para páginas CAPTCHA falsas mediante el abuso de mirrors como unpkg. El contenido HTML y el JavaScript embebido engañan a la víctima y luego la redirigen a destinos controlados por el atacante, con infraestructura que puede cambiar según bloqueos.

En un panorama donde los atacantes recurren cada vez más a servicios legítimos para sostener sus operaciones, entender el “abuso de infraestructura” ayuda a anticipar riesgos que no dependen únicamente de la ejecución de malware en el equipo de la víctima.

Fuente: https://thehackernews.com/2026/08/24-npm-packages-abuse-unpkg-mirrors-to.html