Skip to main content
Blog
Blog Attacks

Cómo detectar Magecart en tiempo real, no después de la brecha

Los escáneres periódicos pierden skimmers condicionales. La monitorización runtime en navegador detecta Magecart al enganchar un formulario o abrir exfiltración.

Jul 11, 2026 7 min read
Cómo detectar Magecart en tiempo real, no después de la brecha

Para detectar Magecart en tiempo real, observa los scripts mientras se ejecutan en sesiones de compradores reales y alerta en el momento en que uno engancha un campo de formulario, se adjunta al botón de submit o abre un destino saliente que no estaba en la línea base de la página. Un escaneo periódico desde fuera solo te dice qué devolvió la página a un escáner, en una ubicación de escaneo, durante una ventana de escaneo. Los skimmers modernos están hechos para evitar justo eso.

El hueco temporal es todo el problema. Un escáner corre cada pocas horas o una vez al día desde un crawler fijo. Un skimmer corre en la única sesión que le importa: un titular de tarjeta real, en una región objetivo, en un dispositivo objetivo, en checkout. cside cierra ese hueco observando las mismas sesiones que el atacante busca y capturando qué hace cada script en runtime, de modo que un cambio malicioso aparece mientras la exposición está viva, no después de que llegue un informe forense de una red de tarjetas.

Por qué los escáneres pierden skimmers condicionales

Los payloads Magecart llevan cada vez más lógica de guardia. Deciden si activarse antes de robar nada, lo que significa que una carga limpia no prueba nada.

Condiciones de evasión comunes que derrotan escaneos desde fuera:

  1. Geo-segmentación: el payload se activa solo para IPs de ciertos países y sirve código benigno en otros. Un escáner que rastrea desde una región de datacenter fuera del objetivo no lo dispara.
  2. Filtrado por dispositivo y UA: el skimmer corre solo en perfiles de navegador móvil o escritorio reales y se suprime ante firmas headless o de crawler.
  3. Ventanas horarias: la activación se limita a ciertas horas, así que un escaneo que corre en el momento equivocado no ve nada.
  4. Filtrado por estado de sesión: el código espera un carrito poblado o una ruta de checkout antes de armarse, algo que un escaneo sintético que carga una URL nunca alcanza.
  5. Comprobaciones anti-automatización: el payload inspecciona navigator.webdriver, ausencia de timing de input o ausencia de eventos de puntero y se queda dormido cuando detecta una sesión automatizada.

Cada condición es un filtro que excluye escáneres por diseño. El atacante no necesita derrotar la firma de tu herramienta de monitorización; solo necesita reconocer que el visitante no es un cliente que va a pagar en el segmento objetivo. Eso es mucho más fácil, y una captura estática del archivo no puede registrar una decisión que el código toma al ejecutarse.

Qué ve la monitorización runtime que un escaneo nunca verá

El escaneo desde fuera compara contenido de archivos o hashes. La monitorización runtime observa comportamiento en un navegador vivo, que es una superficie distinta y mayor.

SeñalEscaneo periódico desde fueraMonitorización runtime en navegador
Payload condicional que se oculta de crawlersVe la versión benignaVe la versión servida a la sesión real objetivo
Lecturas DOM / campos de tarjeta y loginNo observadasObservadas cuando el script accede al campo
Hooks de eventos en submit, keydown o changeNo observadosCapturados cuando el listener se adjunta
Nuevo endpoint de exfiltración al clic de pagoPerdido salvo que se capture en la solicitudMarcado contra la línea base de destinos de la página
Compromiso de un origen de vendor ya permitidoHash/origen siguen pareciendo autorizadosEl cambio de comportamiento lo marca sin importar el origen
Payload ofuscado ensamblado en runtimeEl archivo estático parece inerteVisible cuando se ejecuta y actúa

Los comportamientos que importan en un skimmer digital no están en el archivo en reposo. Ocurren cuando el script corre: entra en el DOM, lee value del input de número de tarjeta, registra un handler en el evento submit del formulario, monta un payload y lo envía con fetch, XMLHttpRequest o navigator.sendBeacon a un dominio parecido justo cuando el usuario hace clic en pagar. Observar la ejecución es el único punto de vista que ve esa secuencia.

El caso más difícil para herramientas basadas en hash es el compromiso de cadena de suministro. Un script de vendor confiable recibe una versión nueva y aparentemente legítima desde un CDN autorizado. El hash es nuevo pero válido; el origen está en tu allowlist. Nada del archivo o su fuente parece mal. Lo que se ve mal es el comportamiento: un script que antes renderizaba un widget ahora lee un campo de pago y publica a un destino que nunca contactó. La monitorización runtime crea una línea base de lo que cada script hace, así que un cambio de comportamiento dispara alerta aunque el origen y la firma sigan dentro de política.

Un plan operativo para detección en tiempo real

El objetivo es acortar el intervalo entre cambio malicioso y contención, y conservar evidencia que sobreviva una revisión forense.

  1. Monitoriza producción desde sesiones reales de compradores, en producto, carrito y checkout, no solo el paso de pago, y no desde un crawler sintético.
  2. Crea una línea base del comportamiento de cada script: qué nodos DOM lee, qué campos de formulario toca, qué destinos contacta. La desviación de esa línea base es tu señal principal.
  3. Alerta sobre nuevos destinos de exfiltración en el momento en que un script contacta un dominio ausente del conjunto de destinos establecido de la página.
  4. Alerta sobre nuevos hooks de formulario: un listener que se adjunta a un campo de pago o credenciales, o al botón de submit, en un script que nunca lo hacía.
  5. Captura el payload legible y marcas de tiempo por sesión para reconstruir qué se ejecutó, en qué sesiones y qué datos estaban en alcance.
  6. Envía alertas de comportamiento de alta severidad directo a respuesta a incidentes con identidad del script, páginas afectadas y destino ya adjuntos.

Los pasos 2 a 4 convierten visibilidad runtime cruda en algo sobre lo que un analista puede actuar en minutos, sin hacer ingeniería inversa de JavaScript ofuscado a posteriori.

Cómo encaja cside

cside instrumenta sesiones reales de compradores y observa scripts de terceros y propios mientras se ejecutan. Captura el comportamiento runtime que un escáner no alcanza: acceso a campos de formulario, hooks de event listener en inputs de pago y login, y solicitudes salientes a destinos fuera de la línea base de la página. Como la detección corre en las mismas sesiones que el atacante busca, un skimmer condicional que se oculta de crawlers aparece en el momento en que actúa sobre un visitante real.

Cuando el comportamiento de un script se desvía, cside marca qué cambió, dónde corrió, qué campos tocó y adónde fue la data, con marcas de tiempo por sesión y el payload legible preservado para investigación. Eso da al owner del resultado el contexto para contener exposición mientras sigue viva, y un rastro de evidencia para las preguntas posteriores. La misma telemetría de navegador alimenta captura de dispositivo e IP real, detección de agentes IA y automatización, y señales de comportamiento proxy/VPN dentro de la plataforma cside.

Lecturas adicionales en cside

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

Un escáner carga la página desde una ubicación fija en un horario fijo. Un skimmer condicional lee región, dispositivo, referrer u hora del día y sirve código limpio a cualquier cosa que no coincida con su perfil objetivo. La IP, cabeceras y ausencia de una sesión real de checkout del escáner rara vez coinciden, así que recibe la versión benigna. El skimmer solo se activa para compradores reales del segmento objetivo, algo que el escáner nunca llega a ser.

Un script antes silencioso empieza a leer campos de pago o login; un hook `addEventListener` se engancha al botón de submit o a `keydown` en un campo de tarjeta; aparece un destino saliente nuevo que no estaba en la línea base de la página; o un script llama a `navigator.sendBeacon` o a una solicitud de imagen oculta justo cuando el usuario hace clic en pagar. Todo eso solo se observa mientras el código se ejecuta en un navegador real, no en una copia estática del archivo.

No. CSP y monitorización runtime resuelven mitades distintas del problema. CSP puede bloquear una solicitud de exfiltración hacia un destino `connect-src` no listado, pero no te dice qué script lo intentó, qué leyó antes ni si se comprometió un origen de vendor ya permitido. La monitorización runtime aporta ese contexto de comportamiento y detecta skimmers que exfiltran por un origen ya autorizado. Usa ambas.

Monitoriza y Asegura tus Scripts de Terceros

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

Comienza gratis, o prueba Business con una prueba de 14 días.

Interfaz del panel de cside mostrando monitorización de scripts y análisis de seguridad
Related Articles
Reservar una demo