El skimming web es el robo de datos de tarjetas de pago mediante JavaScript malicioso que se ejecuta en el navegador del comprador, en una página de compra o de pago. El script copia lo que el cliente escribe y se lo envía al atacante, mientras el pago real se completa con normalidad, de modo que nadie lo nota. También se conoce como e-skimming, formjacking o ataques tipo Magecart, y es la amenaza que los requisitos 6.4.3 y 11.6.1 de PCI DSS buscan atender.
Qué es el skimming web, en palabras sencillas
Un skimmer físico es un dispositivo colocado en un lector de tarjetas que copia los datos de su tarjeta cuando la usa. El skimming web es la misma idea trasladada a un sitio web. En lugar de un aparato en un cajero automático, el atacante coloca unas pocas líneas de JavaScript en una página donde las personas escriben los datos de su tarjeta. Cuando el cliente completa el número de tarjeta, la fecha de vencimiento, el código de seguridad y la dirección de facturación, el script lee esos valores del formulario y envía una copia a un servidor que controla el atacante.
El cliente completa la compra, el comercio recibe el pedido y el procesador de pagos ve una transacción normal. Eso es lo que hace tan silencioso este tipo de ataque: nada falla, así que nada parece estar mal. El robo de tarjetas suele descubrirse mucho después, cuando un banco emisor, una marca de tarjetas o un investigador de seguridad rastrea un patrón de fraude hasta un comercio en común.
Nombres con los que lo encontrará
| Término | Qué significa normalmente |
|---|---|
| Skimming web | El nombre general: robar datos de tarjetas de una página web mediante script inyectado. |
| E-skimming | Lo mismo; es el término que usa el PCI SSC en su guía sobre la seguridad de las páginas de pago. |
| Magecart | Un nombre genérico que los investigadores de seguridad dan a muchos grupos y campañas criminales que inyectan skimmers. El nombre viene de las primeras campañas contra tiendas Magento, pero la técnica no depende de una plataforma. |
| Formjacking | Secuestrar un formulario web, a menudo el de pago, para capturar lo que se escribe en él. |
Cómo funciona un ataque de skimming
Casi todos los casos siguen los mismos cuatro pasos, sea cual sea el grupo detrás.
- Conseguir un punto de apoyo. El atacante necesita una forma de cambiar lo que carga el navegador. Las vías habituales son credenciales de administrador robadas, un complemento o una biblioteca vulnerable del sistema de gestión de contenido, un servidor comprometido, o el compromiso de un servicio de terceros cuyo script el sitio ya carga. El artículo sobre XSS y manipulación del DOM explica estas vías con más detalle.
- Inyectar el skimmer. El atacante añade un script, o modifica uno existente, para que se ejecute en la página. El código inyectado suele ser un pequeño cargador que descarga el skimmer real desde otro dominio, lo que mantiene mínimo el cambio en los archivos de la víctima.
- Capturar los datos. El script escucha cuando se completa o se envía el formulario de pago y lee los campos. Algunos skimmers también capturan datos de inicio de sesión, y otros muestran un formulario de pago falso sobre el verdadero.
- Enviarlos fuera. Los datos se envían al atacante, por ejemplo mediante una solicitud de imagen oculta o una solicitud en segundo plano a un dominio parecido al de un servicio de analítica. Después las tarjetas robadas se usan o se venden.
Los skimmers suelen escribirse para pasar desapercibidos: pueden ejecutarse solo en las páginas de pago, omitir a los visitantes que parecen administradores, ocultar su código con ofuscación o esperar a que la página termine de cargar. Por eso un vistazo rápido a la página en un navegador, o una revisión manual ocasional del código fuente, rara vez los encuentra.
Por qué las herramientas de seguridad del servidor suelen no verlo
La mayoría de los controles de seguridad vigilan el servidor, la red o el código de un repositorio. Un skimmer hace su trabajo en el navegador del cliente, cuando la página ya salió de sus servidores. De ahí se derivan tres consecuencias.
- HTTPS no lo detiene. El script lee los campos del formulario en el navegador, antes de que los datos se cifren para el transporte. Una conexión segura protege los datos en tránsito, no contra un script al que se le permite ejecutarse en la página.
- Un firewall de aplicaciones web solo ve las solicitudes a su servidor. La solicitud de salida del skimmer va del navegador del cliente al atacante, no pasa por su infraestructura.
- Su propio código fuente puede estar limpio. Si el script malicioso viene de un tercero, o lo añade un gestor de etiquetas o una CDN, una revisión del código de su repositorio no lo mostrará. Lo que importa es lo que el navegador realmente recibe.
Esta brecha es la razón por la que PCI DSS añadió requisitos centrados en la vista que tiene el navegador de la página de pago: vea por qué el PCI SSC creó los requisitos 6.4.3 y 11.6.1.
¿Un iframe o una redirección hacen inmune a un comercio?
Enviar a los clientes a la página alojada de un proveedor de pagos, o incrustar el formulario de pago del proveedor en un iframe, reduce mucho los datos de tarjeta que tocan sus propios sistemas. Es una decisión de diseño sensata. Pero no vuelve irrelevante la página que lo rodea:
- Con una redirección, un atacante que controle su página antes de la redirección puede enviar a los clientes a una página parecida.
- Con un iframe, un atacante que controle la página principal puede quitar el iframe y poner un formulario falso en su lugar, o alterar cómo se comporta la página a su alrededor.
El PCI SSC ha tratado estos casos de forma explícita. Cómo se aplican los requisitos a cada forma de aceptar pagos se explica en el artículo sobre SAQ A, SAQ A-EP y SAQ D.
Cómo reducir el riesgo
Ningún control detiene por sí solo todos los skimmers, por eso las organizaciones combinan varios. Los que tienen mejor respaldo son:
- Cargar la menor cantidad posible de scripts en las páginas de pago. Cada script es un lugar donde un atacante puede esconderse. Elimine todo lo que no sea necesario para cobrar.
- Mantener un inventario y un motivo para cada script, y aprobar los cambios de forma deliberada. Vea cómo crear un inventario de scripts de la página de pago.
- Restringir desde dónde se pueden cargar scripts con una Política de Seguridad de Contenido (CSP), y fijar los archivos externos con Integridad de Subrecursos (SRI) cuando sea práctico.
- Gobernar los gestores de etiquetas y a los terceros como parte de su cadena de suministro: riesgo de JavaScript de terceros y riesgo de los gestores de etiquetas.
- Aplicar parches y reforzar el sitio: actualizar complementos y bibliotecas, usar autenticación multifactor para los administradores y limitar quién puede publicar cambios.
- Detectar cambios. Comparar lo que recibe el navegador con una línea base conocida y avisar a las personas cuando algo difiera: cómo detectar la manipulación del lado del cliente.
Si cree que una página ha sufrido skimming
Trátelo como un incidente de seguridad conforme a su plan de respuesta a incidentes. Elimine o desactive el script, conserve la evidencia (la página tal como se recibió, los registros del servidor, el historial de cambios), encuentre y cierre la vía de entrada, e informe a su adquirente, a las marcas de tarjetas y a su asesor legal según lo exijan sus contratos y la ley. Su adquirente puede indicarle qué esperan las marcas de tarjetas.
Puntos clave
- El skimming web es JavaScript malicioso en una página de pago que copia datos de tarjetas en el navegador; Magecart, e-skimming y formjacking son nombres de la misma familia de ataques.
- La compra se completa con normalidad, por eso un skimmer puede funcionar mucho tiempo sin ser notado.
- HTTPS y los firewalls del servidor no lo detienen, porque el robo ocurre en el navegador del cliente.
- Las redirecciones y los iframes reducen su exposición, pero no eliminan la necesidad de proteger la página que los rodea.
- La defensa práctica es por capas: menos scripts, un inventario con aprobaciones, una CSP restrictiva, controles de integridad, parches y detección de cambios.
Preguntas frecuentes
¿Qué es el skimming web?
El skimming web es el robo de datos de tarjetas de pago mediante JavaScript malicioso que se ejecuta en una página de compra o de pago y copia los datos que los clientes escriben en el formulario. El atacante recibe los datos mientras el pago real continúa con normalidad.
¿Magecart es un virus?
No. Magecart no es un programa ni un grupo único. Es un nombre genérico que usan los investigadores para muchos grupos y campañas criminales que inyectan en sitios web JavaScript que roba tarjetas.
¿HTTPS protege contra el skimming web?
No. HTTPS protege los datos mientras viajan entre el navegador y su servidor. Un skimmer lee los datos dentro del navegador, antes de enviarlos, de modo que un certificado válido no lo impide.
Si uso una página de pago alojada o un iframe, ¿mi sitio puede sufrir skimming?
El riesgo es menor, pero no es cero. Un atacante que controle la página que rodea una redirección o un iframe podría reemplazar el formulario de pago o enviar a los clientes a otro lugar. PCI DSS 6.4.3 y 11.6.1 lo tienen en cuenta, y su adquirente o su evaluador decide cómo se aplican a usted.
¿Cómo me enteraría de que mi sitio tiene un skimmer?
Rara vez mirando la página. Las organizaciones encuentran los skimmers mediante un monitoreo que compara los scripts y las cabeceras que recibe un navegador con una línea base aprobada, mediante avisos de bancos emisores o marcas de tarjetas, o mediante investigación de seguridad. Por eso la detección de cambios forma parte de la respuesta de PCI DSS.
Referencias
- PCI SSC: Payment Page Security and Preventing E-Skimming, anuncio (marzo de 2025, en inglés)
- PCI SSC: Coffee with the Council, requisitos de comercio electrónico vigentes después del 31 de marzo de 2025 (en inglés)
- OWASP: Third Party JavaScript Management Cheat Sheet (en inglés)
- MDN: Política de Seguridad de Contenido (CSP)
- ICO del Reino Unido: aviso de sanción a British Airways, 16 de octubre de 2020 (PDF, en inglés)
Última revisión: 17 de octubre de 2026