Cómo el formjacking roba los datos de tu tarjeta sin que te des cuenta

En septiembre de 2018, British Airways descubrió que 380.000 clientes tuvieron sus datos de tarjeta robados durante reservas en el sitio web y la app de la aerolínea. El responsable: 22 líneas de JavaScript malicioso insertadas discretamente en el código de la página de pago. Ningún virus, ningún pop-up sospechoso — solo un formulario de pago que enviaba una copia de los datos escritos a un servidor criminal. La transacción seguía su curso normal. No notabas nada.
Ese ataque tiene nombre: formjacking.
Qué es el formjacking
El formjacking es un ataque en el que los criminales inyectan código JavaScript malicioso en páginas de pago de tiendas online. Cuando completas los datos de la tarjeta en el checkout — número, fecha de vencimiento, CVV — el script captura esa información en tiempo real y la envía a un servidor controlado por los atacantes, incluso antes de que el formulario se envíe al sitio legítimo.
La compra sigue su curso con normalidad. La tienda recibe el pedido. Se cobra la tarjeta. No te das cuenta de nada hasta que aparece un cargo no reconocido en el resumen días o semanas después.
El grupo más conocido asociado a esta técnica es Magecart — nombre colectivo para decenas de grupos criminales que operan este tipo de ataque desde al menos 2015. El nombre viene de "Magento cart", la plataforma de e-commerce que era el objetivo más frecuente en las primeras campañas. Según DataDome, los ataques Magecart crecieron un 103% en solo seis meses durante 2024-2025.
Cómo funciona el ataque en la práctica
El formjacking puede ocurrir por dos vías principales:
- Compromiso directo del sitio: el atacante explota una vulnerabilidad en el CMS de la tienda — WordPress, Magento, OpenCart — e inserta el script malicioso directamente en el código de la página de checkout.
- Ataque vía terceros (supply chain): la tienda usa un script externo legítimo — un chatbot, una herramienta de analítica, un widget de marketing — que es comprometido. Cuando la tienda carga ese script, carga también el código del atacante junto con él.
El script permanece activo de forma silenciosa. No modifica la apariencia de la página ni interrumpe la compra. Solo escucha los eventos de escritura en los campos del formulario y copia los datos en cuanto se completan — a veces incluso antes de que el usuario haga clic en "Finalizar compra".
En 2024, una vulnerabilidad crítica en Adobe Commerce y en Magento (CVE-2024-34102, llamada CosmicSting) fue explotada a gran escala para instalar skimmers Magecart. Los investigadores registraron que el 75% de las tiendas afectadas seguían sin el parche una semana después de que se divulgara la corrección — una ventana más que suficiente para que los grupos operaran con libertad.
Los casos más famosos
British Airways (2018)
El código malicioso estuvo activo durante 15 días en el sitio web y en la aplicación de la aerolínea británica. Fueron 380.000 clientes con datos personales y financieros comprometidos. La investigación identificó que el script era una versión ligeramente modificada de una biblioteca JavaScript legítima usada por el sitio — alterada con apenas 22 líneas extra de código. British Airways fue multada con 20 millones de libras por el ICO, el regulador de privacidad del Reino Unido.
Ticketmaster (2018)
Aquí el vector fue un chatbot de soporte proporcionado por una empresa externa llamada Inbenta. El script de Inbenta fue comprometido y, como Ticketmaster lo cargaba en sus páginas de checkout, los datos de 40.000 clientes fueron capturados. Es un ejemplo claro de ataque a la cadena de suministro de software: el objetivo directo no era Ticketmaster, sino un proveedor con acceso a su entorno de producción.
¿El formjacking es lo mismo que el phishing?
No. El phishing engaña al usuario para que entregue sus datos en un sitio falso; el formjacking compromete un sitio legítimo para capturar datos que el usuario proporciona sin saber que está siendo observado. En el phishing, accedes a un dominio equivocado. En el formjacking, estás en el dominio correcto — solo que el código de la página fue adulterado.
Esa diferencia hace que el formjacking sea más difícil de detectar: verificar la URL no ayuda. El candado HTTPS tampoco — garantiza que la conexión entre tú y el servidor está cifrada, no que el código de la página sea íntegro.
Por qué es tan difícil de detectar
- Ningún cambio visual: la página parece idéntica a la versión legítima — diseño, logo, formulario, todo igual.
- HTTPS no garantiza código limpio: el script malicioso ya está dentro de la página servida por el servidor legítimo. El cifrado protege el canal de comunicación, no el contenido del código.
- Los scripts de terceros son invisibles para el usuario: una tienda común puede cargar decenas de scripts externos. El visitante no tiene visibilidad de cuáles son ni de dónde vienen.
- La captura ocurre antes del envío: aunque la transacción falle después por cualquier motivo, los datos escritos ya fueron enviados al servidor de los atacantes.
Vale la pena señalar que una VPN no protege contra el formjacking: cifra el tráfico entre tú y el sitio, pero no interfiere en lo que el JavaScript dentro de la página hace con los datos que escribes localmente en el navegador.
Cómo protegerse al comprar online
Ninguna medida elimina el riesgo por completo, pero algunas prácticas reducen bastante la exposición:
- Usa una tarjeta virtual desechable: la mayoría de los bancos digitales brasileños — Nubank, Itaú, Bradesco, Inter — ofrecen tarjetas virtuales con número único por compra o con validez corta. Aunque sea capturado por el skimmer, el dato queda inútil rápidamente.
- Prefiere el checkout vía intermediario: pagar vía PayPal, PicPay o Apple/Google Pay no expone el número real de la tarjeta al sitio de la tienda. El intermediario procesa el pago y el comercio nunca ve los datos de la tarjeta.
- Activa notificaciones en tiempo real: las notificaciones instantáneas en la app del banco permiten identificar cargos no reconocidos mientras todavía es más fácil disputarlos.
- Evita guardar la tarjeta en tiendas de nicho: los grandes marketplaces tienen equipos de seguridad dedicados y auditorías regulares. Las tiendas más pequeñas son blancos más fáciles y tienen menos recursos para responder a incidentes.
- Bloqueo de scripts de terceros: la extensión uBlock Origin, en modo avanzado, bloquea scripts de terceros por defecto — reduce directamente la superficie de ataque del formjacking vía supply chain.
Además de los skimmers en el checkout, vale la pena estar atento a otras estafas de pago que actúan fuera del entorno del e-commerce tradicional, como los códigos QR falsos de Pix pegados sobre los originales — el objetivo es el mismo: interceptar el pago antes de que llegue a su destino correcto.
Conclusión
El formjacking es silencioso por diseño. No hay pop-up de alerta, ningún correo sospechoso que ignorar, ninguna URL extraña que detectar. El ataque ocurre dentro de un sitio legítimo mientras haces algo completamente normal — comprar un pasaje o una entrada. La defensa más práctica para el consumidor es sacar el número real de la tarjeta de la ecuación: una tarjeta virtual desechable o el pago vía intermediario eliminan el dato que el skimmer quiere capturar.
Para quienes mantienen tiendas online, la monitorización de la integridad de los scripts y la aplicación inmediata de parches son las principales líneas de defensa. Los atacantes explotan ventanas de vulnerabilidad medidas en días — dejar un CMS sin actualizar durante semanas es aceptar ese riesgo. Si quieres entender cómo este vector de terceros se convirtió en uno de los más explotados, lee sobre el ataque Jscrambler y la cadena de suministro de paquetes NPM.




Comentarios