Paquetes maliciosos en npm usan Adspect para ocultar criptoestafas y atacar la cadena de suministro

CyberSecureFox 🦊

Un análisis reciente de la empresa de seguridad Socket ha sacado a la luz siete paquetes maliciosos en npm que utilizaban el servicio en la nube Adspect para ocultar su comportamiento y redirigir a usuarios hacia sitios web de criptoestafas. El incidente ilustra con claridad cómo los atacantes explotan la cadena de suministro de software y reutilizan herramientas legítimas de protección anti‑bot como mecanismo de cloaking y evasión.

Campaña en npm: abuso de Adspect y paquetes JavaScript maliciosos

Los paquetes fueron publicados en npm entre septiembre y noviembre de 2025 por una cuenta bajo el seudónimo dino_reborn, asociada al correo geneboo@proton[.]me. A primera vista se presentaban como dependencias normales para proyectos web, lo que aumentaba la probabilidad de que desarrolladores los integraran sin sospechas en aplicaciones legítimas.

Adspect se comercializa como una solución para filtrar tráfico y proteger sitios frente a bots y tráfico no deseado. En esta campaña se empleó de forma inversa: como plataforma de cloaking avanzado para decidir en tiempo real qué usuarios verían el contenido malicioso y cuáles serían redirigidos a páginas señuelo inofensivas, dificultando su detección por analistas e infraestructuras de seguridad.

De los siete paquetes identificados, seis incluían código JavaScript malicioso, mientras que un séptimo, denominado signals-embed, actuaba como componente de señuelo, generando la página inicial desde la que se iniciaba la cadena de ataque.

Análisis técnico del JavaScript malicioso en la cadena de suministro

Ejecución automática en el navegador mediante IIFE

El núcleo malicioso consistía en unos 39 KB de JavaScript encapsulado en una IIFE (Immediately Invoked Function Expression), es decir, una función que se ejecuta justo después de definirse. En la práctica, bastaba con que un desarrollador incorporara el paquete a su frontend para que el script se cargara y ejecutara automáticamente en el navegador de cada usuario, sin necesidad de llamadas explícitas adicionales.

Técnicas anti‑análisis y bloqueo de herramientas de desarrollo

El código estaba diseñado explícitamente para dificultar el análisis estático y dinámico. Entre sus funciones de evasión destacaban:

  • bloqueo del clic derecho del ratón;
  • desactivación de la tecla F12 (DevTools);
  • intercepción de atajos como Ctrl+U (ver código fuente) y Ctrl+Shift+I (herramientas de desarrollo);
  • recarga forzada de la página al detectar DevTools abiertos.

Este tipo de técnicas es común en campañas de phishing y fraudes online, donde los operadores buscan impedir que investigadores de ciberseguridad y sistemas automatizados inspeccionen fácilmente el DOM, el código fuente o el flujo de red.

Fingerprinting del navegador y filtrado de víctimas

De forma paralela, el script realizaba un fingerprinting exhaustivo del entorno del usuario. Recopilaba datos como:

  • user agent del navegador;
  • idioma y configuraciones regionales;
  • protocolo usado (HTTP/HTTPS);
  • dominio (host), referrer y URI completo;
  • parámetros de la URL, codificación y otros metadatos de contexto.

La información se enviaba a un servidor proxy controlado por los atacantes, mientras que la dirección IP real del usuario se remitía a la API de Adspect. Combinando estos datos, la infraestructura decidía si el visitante era una víctima potencial legítima o, por el contrario, un escáner automatizado o un analista de seguridad.

Cadena de ataque: de una CAPTCHA falsa a criptoestafas

Cuando el perfil del visitante superaba los filtros de Adspect, el usuario era conducido a una falsa página de verificación CAPTCHA, decorada con logotipos de criptomonedas como Ethereum o Solana. A simple vista, la pantalla imitaba una comprobación típica de “no soy un robot”.

Al interactuar con la supuesta CAPTCHA, se abría en una nueva pestaña un URL generado por Adspect, que finalmente redirigía a un sitio de criptoestafa. De este modo, la navegación hacia el dominio fraudulento parecía iniciada por el propio usuario y no por un script, lo que ayuda a eludir algunos controles anti‑fraude del navegador y de soluciones de seguridad.

Si el fingerprinting sugería que el visitante podía ser un investigador o un motor de análisis, el sistema mostraba en su lugar una página señuelo supuestamente relacionada con la empresa Offlido, sin contenido malicioso. Esta estrategia de doble uso reduce la probabilidad de que la campaña sea identificada y documentada de forma temprana.

Impacto en la seguridad de la cadena de suministro de software

Este caso se suma a la creciente lista de ataques a la cadena de suministro de software basados en ecosistemas de paquetes como npm, PyPI o Maven. En lugar de atacar directamente a cada organización, los actores maliciosos comprometen repositorios públicos, confiando en la alta reutilización de dependencias en el desarrollo moderno.

Informes recientes de proveedores de seguridad de aplicaciones indican que se detectan miles de paquetes maliciosos o comprometidos cada año en estos repositorios. Estudios como el “State of the Software Supply Chain” de Sonatype han mostrado un crecimiento continuado de este tipo de amenazas, impulsado por la amplia adopción de código abierto y la presión por desarrollar más rápido.

Buenas prácticas para proteger proyectos npm y dependencias abiertas

Tras la publicación del informe de Socket, npm eliminó rápidamente los siete paquetes maliciosos. Sin embargo, el hecho de que permanecieran disponibles durante meses refleja la necesidad de fortalecer tanto los procesos de revisión de paquetes como las prácticas de seguridad en los equipos de desarrollo.

Entre las medidas recomendadas para reducir el riesgo en npm y otras plataformas destacan:

  • emplear herramientas especializadas de Software Composition Analysis (SCA) para detectar paquetes maliciosos, vulnerabilidades conocidas y dependencias abandonadas;
  • fijar versiones mediante archivos de bloqueo (lock files) y revisar cuidadosamente cualquier actualización de dependencias críticas;
  • minimizar el número de paquetes de terceros, evitando dependencias innecesarias o de origen poco claro;
  • realizar auditorías periódicas del inventario de bibliotecas y validar la reputación de los mantenedores (actividad del proyecto, comunidad, historial de seguridad);
  • aplicar principios de Zero Trust al código de terceros, combinando revisiones de código, pruebas dinámicas y controles en tiempo de ejecución (por ejemplo, CSP y Subresource Integrity en aplicaciones web).

La aparición de paquetes maliciosos en npm que explotan servicios como Adspect para encubrir criptoestafas confirma que la cadena de suministro de software es un objetivo prioritario para los atacantes. Fortalecer los procesos de gestión de dependencias, invertir en herramientas de análisis automatizado y formar de manera continua a los equipos de desarrollo son pasos esenciales para reducir la superficie de ataque y evitar que repositorios y servicios legítimos se conviertan en vectores eficaces de distribución de malware.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.