Un enlace llega a la bandeja de entrada o a una ventana de chat apuntando a unpkg.com, el CDN que millones de desarrolladores usan cada día para traer código JavaScript directamente desde el registro de npm. Se ve exactamente como lo que dice ser, un archivo alojado por un servicio conocido por servir código abierto, no páginas de phishing. Al hacer clic aparece un CAPTCHA de Cloudflare, con un diseño lo bastante convincente como para pasar una mirada rápida. Es falso. Detrás hay una cadena de redirección construida por un atacante que nunca tuvo que registrar un dominio parecido, comprar hospedaje, ni enviar un solo correo que suplantara a nadie. Los investigadores Moshe Siman Tov Bustan y Vitalii Chepurko, de OX Security, encontraron 24 paquetes de npm responsables de exactamente esto, todos compartiendo un mismo bloque de código malicioso, ninguno diseñado para infectar al desarrollador que los instala.
Publicar Malware Como Paquete Nunca Fue el Objetivo
Cada uno de los 24 paquetes era inofensivo al instalarse. Eso fue deliberado. El verdadero objetivo del atacante nunca fue la máquina de un desarrollador, sino la red de réplicas que copia automáticamente los paquetes públicos de npm hacia otros dominios: unpkg, npmmirror, el CDN de Yarn, el espejo de Tencent. Publicar un paquete que contiene un archivo HTML basta para que, en cuestión de horas, ese archivo se sirva, byte por byte, desde un dominio con reputación establecida y un certificado TLS que nadie cuestiona. Cada paquete acumulaba entre 50 y 300 descargas semanales antes de que npm lo detectara y lo retirara, una vida útil lo bastante corta para esquivar el escrutinio sostenido, pero lo bastante larga como para servir miles de cargas de página. El HTML en sí renderiza una pantalla falsa de verificación de Cloudflare, el mismo patrón de ingeniería social usado en toda la familia más amplia de ataques ClickFix, que engañan a la víctima para que pegue comandos suministrados por el atacante en su propio cuadro de diálogo Ejecutar o en una terminal. El destino de la redirección se puede reconfigurar después del hecho, lo que significa que la página de aterrizaje inofensiva de hoy puede convertirse mañana en un capturador de credenciales o un distribuidor de malware sin necesidad de publicar un nuevo paquete.
DMARC Fue Construido Para Responder Una Pregunta Que Este Ataque Nunca Plantea
DMARC, SPF y DKIM existen para responder una sola pregunta: si el dominio en el encabezado From realmente tiene autoridad para enviar ese mensaje. Nada de esa maquinaria se activa aquí, porque este ataque no requiere suplantar ningún dominio de envío. La página de phishing vive en unpkg.com, un dominio que el atacante nunca controla ni necesita suplantar, ya que el propio comportamiento de replicación del CDN hace el hospedaje por él. Un enlace hacia ella puede viajar por correo electrónico, por un mensaje de Slack, por un texto, o por un comentario en un issue público de GitHub, y en cada uno de esos canales llega pareciendo tráfico de desarrollador completamente normal. Los protocolos de autenticación fueron diseñados bajo el supuesto de que una identidad falsificada es lo que hay que detectar. Esta técnica jamás falsifica una identidad. Toma prestada una identidad real que nunca estuvo pensada para alojar nada malicioso.
El Modelo de Registro Abierto Sigue Produciendo el Mismo Punto Ciego
Esta no es la primera vez que el modelo público y de bajo control de publicación de npm se convierte en infraestructura de phishing gratuita, y no será la última. Un investigador de seguridad ya había señalado en julio una versión más pequeña del mismo truco, un solo paquete que usaba una página falsa de Cloudflare para redirigir visitantes a otro lugar. Lo que hace duradero este patrón es estructural: cualquiera puede publicar un paquete en minutos, las réplicas copian el contenido de ese paquete de forma automática y sin criterio alguno, y retirar el original no elimina cada copia ya replicada en circulación. Un defensor que bloquea el paquete original de npm pero deja intacta la réplica de unpkg.com no ha cerrado nada. La apertura del registro es la característica que lo hace útil para millones de desarrolladores legítimos, y es exactamente la misma característica que un atacante está explotando aquí.
Qué Significa Esto Para Tu Programa
No extiendas confianza automática a los dominios de CDN y réplicas solo porque su reputación es antigua y su TLS es válido. unpkg.com, jsdelivr y servicios similares son infraestructura legítima que un atacante decidido puede seguir usando como capa de hospedaje que nunca tuvo que pagar ni asegurar.
Trata esto como una brecha de concientización en seguridad, no solo como un problema técnico. Una página falsa de CAPTCHA alojada en un dominio reconocible orientado a desarrolladores superará el filtro mental que un enlace hacia un dominio desechable habría activado. Entrena a las personas para desconfiar de indicaciones de verificación inesperadas sin importar dónde estén alojadas.
Recuerda que el límite de DMARC no es una falla, es un alcance. Autentica quién tiene permiso para enviar como un dominio. No dice nada sobre hacia dónde apunta un enlace dentro de un mensaje legítimamente autenticado, ni sobre qué página se carga una vez que alguien hace clic. La inspección de enlaces y contenido tiene que acompañar a la autenticación, no reemplazarla.
Si tu organización publica paquetes de npm, monitorea tu propia huella en las réplicas principales. Un paquete comprometido o con typosquatting bajo tu nombre se replica de forma tan automática como uno malicioso construido desde cero, y la copia en la réplica puede sobrevivir a tu capacidad de retirar el original.
La Conclusión
Veinticuatro paquetes, un bloque de código compartido, y un CDN haciendo exactamente lo que fue diseñado para hacer, replicar contenido de forma rápida y confiable, se sumaron para crear infraestructura de phishing desechable que no le costó nada al atacante y no cargó con el peso reputacional que un dominio nuevo sí habría tenido. DMARC nunca iba a detectar esto, no porque haya fallado, sino porque todo el ataque se sitúa fuera de la pregunta que DMARC fue construido para responder. La lección es la misma que este patrón sigue enseñando: la autenticación protege el sobre, no todo aquello hacia lo que el sobre puede apuntar.
DMARC te dice si un dominio tenía derecho a enviar. No puede decirte si un enlace dentro de un mensaje autenticado lleva a algún lugar confiable. Excello Mail convierte tus reportes agregados de DMARC en un registro claro y continuo de cada servicio que envía como tu dominio, para que la parte de tu postura de seguridad que la autenticación sí cubre nunca quede sin vigilancia. Regístrate gratis en Excello Mail y mantén esa capa cubierta mientras tu equipo se encarga del resto.