Skip to main content
Blog
Blog

Vulnerabilidades de seguridad de JavaScript: cómo los scripts ofuscados evaden la CSP y cómo detenerlos

Por qué la CSP no puede detener ataques de JavaScript ofuscado y qué añade la monitorización conductual del navegador que los allowlists de fuentes no pueden.

Jul 12, 2026 8 min read
Vulnerabilidades de seguridad de JavaScript: cómo los scripts ofuscados evaden la CSP y cómo detenerlos
Tabla de Contenidos

Resumen: JavaScript ofuscado y evasión de CSP

  • Pasa por declaración: JavaScript ofuscado pasa CSP declarando solo lo que CSP permite. El comportamiento malicioso empieza después de que el script carga.
  • Dominios, no integridad: CSP permite dominios, no integridad de código. Un dominio de confianza comprometido igual pasa. Polyfill.io pasó CSP en 490,000 sitios.
  • El cumplimiento exige más: 6.4.3 y 11.6.1 requieren detección más allá de CSP: inventario de scripts, verificación de integridad, detección de manipulación.

¿Poco tiempo? Consulta el bloqueo de Magecart y skimmers en el navegador de cside. Cubre todo lo de abajo en un solo despliegue.

Why CSP alone does not stop obfuscated JavaScript

Tres vías por las que el código ofuscado evade la CSP

La CSP controla fuentes, no payloads. Tres patrones de ataque aprovechan esto:

Compromiso de CDN de confianza o host de terceros. El script se carga desde un dominio ya presente en el allowlist. Un payload modificado no activa la CSP porque la URL de origen no cambia. Polyfill[.]io, los ataques de web skimming Magecart y recientes compromisos de CDNs de analítica siguen esta vía.

Inyección en archivos propios. Un atacante con acceso al servidor inyecta código ofuscado en un archivo JavaScript propio existente. Ese archivo se carga desde el dominio del sitio, que siempre está permitido.

Construcción dinámica de código en tiempo de ejecución. Un script aprobado se carga y ensambla una función maliciosa a partir de fragmentos de cadena usando eval(), Function() o equivalentes indirectos. El payload peligroso nunca existe en ningún recurso cargado; se construye dentro del navegador tras una carga de página limpia.

Ninguna de estas vías viola un allowlist de fuentes. La CSP reporta limpio mientras el malware ofuscado se ejecuta.

Cómo los scripts ofuscados evaden también los escáneres automáticos

La ofuscación elimina las señales legibles que tanto los revisores humanos como los escáneres automáticos buscan:

TécnicaQué hacePor qué los escáneres no la detectan
División y concatenación de cadenasFragmenta URLs y palabras clave en partes unidas en tiempo de ejecuciónNinguna cadena completa aparece en la fuente estática
Codificación Base64 con decodificación dinámicaAlmacena el payload como un blob decodificado solo en ejecuciónParece datos, no código ejecutable, para un analizador estático
Secuencias de escape hexadecimal o UnicodeCodifica caracteres como \x61 o ALas herramientas estáticas deben ejecutar el código para resolver el valor real
Nombres de variables aleatoriosReemplaza identificadores legibles con nombres cortos aleatoriosElimina la señal de palabras clave en la que se basan los detectores de patrones
Carga dinámica tardíaObtiene el payload real de un servidor C2 tras ejecutar un script aprobadoEl recurso cargado varía en cada análisis

Common obfuscation techniques and how cside sees through them

Los hashes de Subresource Integrity (SRI) defienden contra sustituciones silenciosas de payloads desde fuentes conocidas, pero solo cuando se puede fijar un hash para cada archivo. Los scripts de terceros que se actualizan frecuentemente hacen que SRI sea impracticable en producción, que es el reto central en la gestión de integridad de scripts dinámicos. SRI tampoco puede proteger contra payloads obtenidos dinámicamente desde un endpoint C2, porque ese payload no existía cuando se calculó ningún hash.

Por qué los escáneres estáticos no ven un CDN secuestrado

Las herramientas de análisis estático y de composición de software analizan el código antes de que se ejecute. Encuentran paquetes con CVE publicados, patrones inseguros como asignaciones a innerHTML desde entrada del usuario y dependencias desactualizadas. Lo que no pueden hacer es observar lo que un CDN entrega realmente al navegador de un visitante.

El incidente de polyfill[.]io es el ejemplo más claro. Cuando Funnull adquirió el dominio en febrero de 2024, el código fuente de cada sitio que incrustaba el script no cambió. El CDN empezó a inyectar JavaScript malicioso en las respuestas que servía, pero solo para usuarios móviles, solo con un referente falsificado y solo cuando el visitante carecía de un patrón de cookies asociado a Google Analytics y a las herramientas de desarrollo.

Un escáner estático habría visto <script src="https://cdn.polyfill[.]io/v3/polyfill.min.js"> en el HTML y no habría encontrado ningún CVE. Tampoco había un hash estable que fijar: el endpoint generaba una respuesta por petición, que es justo el caso en el que la SRI no se aplica. El ataque era invisible para cualquier herramienta que analice el código en reposo. Cuando los investigadores identificaron el payload en junio de 2024, unos 490.000 sitios web ya lo servían a usuarios reales.

La entrega condicional es lo que hace difícil detectar esta clase de ataque desde fuera de la sesión. Los atacantes condicionan los payloads al user agent, al referente, a la geografía y a la hora del día precisamente para quedar fuera de la monitorización sintética y de los perfiles de navegador de los investigadores. Un payload que solo se activa para usuarios móviles de un país una tarde concreta nunca aparece en un análisis estático ni se reproduce en un rastreador.

Enfoques para la protección contra JavaScript ofuscado

EnfoqueControl de fuentesInspección de payloadGestiona compromiso de host de confianzaDetecta inyección dinámica en ejecución
CSPNoNoNo
Subresource Integrity (SRI)ParcialSolo hashParcialNo
WAF o filtrado en capa de redParcialNoNoNo
Análisis estático de JavaScriptNoParcialParcialNo
Monitorización conductual en capa del navegadorOpcional por política

La monitorización en la capa del navegador es el único control de esta tabla que sobrevive a las tres vías de evasión descritas. Funciona junto a la CSP y cubre la brecha de visibilidad de payload que la CSP deja abierta.

Qué exigir a una herramienta resistente a la evasión de CSP

Cuatro preguntas antes de incluir un proveedor en la lista corta:

Observación del payload en tiempo de ejecución. ¿La herramienta analiza lo que los scripts ejecutan dentro del navegador, no solo las URLs desde las que se cargan? Pida al proveedor que demuestre la detección de un script que se carga desde un dominio de confianza y llama a un endpoint de exfiltración no autorizado. Si la demo necesita una URL de fuente maliciosa para activarse, la herramienta depende de la fuente.

Detección de patrones de código ofuscado. Pregunte específicamente sobre división de cadenas, equivalentes de eval() y decodificación dinámica de Base64. Las herramientas que solo detectan eval() literalmente se perderán la mayoría de la ofuscación real.

Monitorización conductual posterior a la carga. Muchos ataques obtienen su payload real de un servidor C2 después de la carga inicial de la página. La herramienta debe continuar monitorizando más allá de DOMContentLoaded, no solo en el parseo inicial.

Explicabilidad de las alertas. Una alerta que solo dice "script sospechoso detectado" no es accionable. Cada hallazgo debe identificar el script, el comportamiento que activó la detección y la llamada de red que intentó, para que un analista pueda clasificar sin adivinar.

Cómo encaja cside en este panorama

cside instrumenta el navegador a través de un script que se ejecuta dentro de cada sesión de visitante. Observa lo que cada script de terceros y propio hace en tiempo de ejecución: llamadas de red realizadas, cambios en el DOM aplicados, campos de datos sensibles accedidos y patrones de ejecución ofuscados detectados.

Cuando una CDN comprometida sirve un payload ofuscado a una página instrumentada por cside, la detección se activa en lo que el payload hace en tiempo de ejecución (llamada de red no autorizada, cadena eval ofuscada, patrón de exfiltración de datos) en lugar de en su origen. Un fallo en el allowlist de fuentes no puede producir un falso negativo en un sistema basado en el comportamiento.

Los requisitos 6.4.3 y 11.6.1 de PCI DSS v4.0.1 (obligatorios desde marzo de 2025) exigen a los comerciantes autorizar todos los scripts en las páginas de pago y detectar modificaciones no autorizadas en el contenido de los scripts o en las cabeceras HTTP. La monitorización conductual en la capa del navegador proporciona la evidencia a nivel de ejecución que esos controles esperan de una capa de monitorización que llega al interior del navegador en lugar de detenerse en el perímetro de red.

Para más información sobre las limitaciones prácticas de la CSP, consulte por qué la CSP no funciona. Para un análisis técnico de los métodos de ofuscación utilizados en ataques reales, consulte la guía de desofuscación de JavaScript de terceros.

An obfuscated payload flagged by behaviour

Lecturas relacionadas

Simon Wijckmans
Founder & CEO

Founder and CEO of cside. Previously a product manager on Cloudflare Page Shield (now Cloudflare Client-Side Security). Co-chair of the W3C Anti-Fraud Community Group and a Forbes 30 Under 30 honoree. Building accessible security against client-side attacks, web security is not an enterprise-only problem.

FAQ

Frequently Asked Questions

La protección resistente a la evasión de CSP describe controles de seguridad que detectan y bloquean JavaScript malicioso incluso cuando los atacantes usan ofuscación, carga dinámica desde un host de confianza o inyección tardía para evadir una Content Security Policy. La CSP impone allowlists de fuentes; los controles resistentes a la evasión inspeccionan lo que los scripts ejecutan realmente dentro del navegador.

La CSP aprueba o bloquea scripts según su origen, no según lo que hacen. Los atacantes la eluden por tres vías: comprometer una CDN de confianza para que entregue malware ofuscado desde la fuente autorizada, inyectar payloads ofuscados en archivos propios que el servidor ya confía, y ensamblar funciones peligrosas en tiempo de ejecución usando equivalentes de eval(). Ninguna de estas rutas viola un allowlist de fuentes.

La propiedad clave es la inspección del payload en tiempo de ejecución. Una herramienta resistente a la evasión de CSP observa lo que los scripts ejecutan dentro de la sesión del navegador, no solo los dominios desde los que se cargan. Debe detectar patrones de código ofuscado, llamadas de red no autorizadas y cambios de comportamiento a mitad de sesión sin depender de un allowlist de fuentes.

Los ataques a la cadena de suministro a través de CDNs de confianza son el patrón principal. En junio de 2024, el compromiso de Polyfill[.]io entregó malware ofuscado a más de 490.000 sitios web. Cada sitio afectado tenía cdn.polyfill[.]io en su allowlist de CSP y ninguna violación de política se activó. Los skimmers de pago tipo Magecart siguen la misma ruta: un host de confianza comprometido sirve código de exfiltración ofuscado que una CSP aprobada permite.

cside instrumenta el navegador para observar lo que cada script hace en tiempo de ejecución, no solo su origen. Detecta ejecución de código ofuscado, llamadas de datos no autorizadas y patrones de inyección dinámica que aparecen tras la carga de la página. Al operar en la capa de ejecución en lugar de la capa de fuentes, un CDN de confianza comprometido no produce un falso negativo.

Monitoriza y protege tus scripts de terceros

Gain full visibility and control over every script delivered to your users to enhance site security and performance.

Empieza gratis o prueba Business con una versión de prueba de 14 días.

Interfaz del panel de cside que muestra la monitorización de scripts y el análisis de seguridad
Related Articles
Reservar una demo

¿Quieres verlo en detalle con un ingeniero?

Treinta minutos, sobre tu propio sitio. Nada de diapositivas.

Te enseñaremos:

Qué scripts de terceros se están ejecutando ahora mismo en tu sitio
En qué punto estás con los requisitos 6.4.3 y 11.6.1 de PCI DSS
Qué parte de tu tráfico son bots y agentes de IA

¿Prefieres mandarnos una pregunta?

Buscando huecos libres…

Solo humanos de verdad. Nos daríamos cuenta.

¿Problemas para reservar? Abrir el calendario en una pestaña nueva

¿Qué quieres resolver?

Cuéntanoslo en una línea y te responderemos con algo útil, no con un discurso genérico.

Solemos ayudar con:

Ver qué scripts de terceros se ejecutan en tu sitio
Evidencias para PCI DSS 6.4.3 y 11.6.1
Bots, agentes de IA y robo de cuentas

¿Prefieres reservar una hora? Elegir un hueco