Skimmer en PrestaShop: cómo saber si están robando las tarjetas de tu tienda
Te llama un cliente porque le han cargado en la tarjeta compras que no hizo, y la usó hace poco en tu tienda. Luego llama otro. Miras la tienda y todo funciona: los pedidos entran, el pago sale bien y no hay nada roto. Eso es justo lo que busca un skimmer, un trozo de código que copia la tarjeta mientras el cliente la escribe y se la manda al atacante sin estropear nada, para que nadie lo note.
Si lo sospechas, no esperes a estar seguro. Cada día que el código sigue ahí son más tarjetas, y si se confirma, el RGPD te da 72 horas desde que lo sabes para notificarlo a la Agencia de Protección de Datos cuando hay riesgo para tus clientes.
Cómo funciona un skimmer en una tienda online
Hay dos variantes, según cómo cobre tu tienda.
Si el cliente escribe la tarjeta en un formulario de tu propia web, el skimmer es un script que lee esos campos y los envía a otro servidor en el momento de pagar. El cobro se hace igual. El cliente no ve nada raro.
Si tu pasarela te lleva a la página del banco para pagar, como hace el TPV de Redsys, el atacante no puede leer ese formulario. Lo que hace entonces es enseñar uno falso antes, con el mismo aspecto, y después dejar que el cliente siga hasta el pago de verdad. El cliente pone la tarjeta dos veces y lo toma por un fallo de la tienda. Pagar fuera de tu web reduce el riesgo, pero no lo elimina.
Así fue la campaña de julio de 2022 contra PrestaShop. El propio proyecto avisó de que los atacantes metían un formulario de pago falso en la página de pedido aprovechando un fallo del núcleo.
Señales de que tu tienda puede tener un skimmer
- Varios clientes, o el banco, te hablan de cargos fraudulentos en tarjetas que se usaron en tu tienda.
- En el proceso de pago aparece un formulario de tarjeta que antes no estaba, o se pide la tarjeta dos veces.
- Al pagar, la página carga scripts de dominios que no reconoces. Lo puedes ver tú mismo abriendo el pedido en una ventana privada y mirando la pestaña de red de las herramientas del navegador.
- Hay ficheros del tema o de módulos modificados en fechas en las que nadie trabajó en la tienda, o ficheros PHP con nombres sin sentido en la carpeta principal.
- Aparecen empleados en el back office que nadie dio de alta.
Ninguna prueba es definitiva por separado. Si ves dos, trátalo como un ataque hasta que se demuestre lo contrario.
Por dónde entran
La puerta más conocida es el propio PrestaShop sin actualizar. El fallo de 2022, registrado como CVE-2022-31181, afecta desde la versión 1.6.0.10 hasta cualquier 1.7 anterior a la 1.7.8.7, que es la que lo corrige. Con él, un atacante podía ejecutar código en el servidor sin tener ninguna contraseña. Siguen funcionando muchas tiendas en versiones anteriores, así que la campaña sigue viva.
La segunda puerta son los módulos. Una tienda suele tener decenas, de autores distintos, y algunos llevan años sin mantenimiento. Friends of Presta, una asociación de la comunidad, publica los fallos de seguridad que se van encontrando en módulos conocidos. Merece la pena cruzar esa lista con los tuyos.
Y la tercera, las contraseñas robadas del back office o del hosting, que dan acceso sin necesidad de ningún fallo.
Qué hacer si lo encuentras
1. Guarda una copia antes de tocar nada
Ficheros, base de datos y registros del servidor, fuera de la tienda. Con ellos se sabe desde cuándo estaba el código y qué pedidos pasaron por la página infectada, y eso es lo que te van a preguntar el banco y la Agencia de Protección de Datos.
2. Corta la fuga
Quita el script o el formulario falso. Si todavía no sabes dónde está todo, desactiva el pago con tarjeta y deja los otros métodos mientras se limpia. Perder unas ventas un día sale más barato que seguir regalando tarjetas.
3. Averigua el alcance
Los registros de acceso del servidor dicen cuándo se creó el fichero, desde dónde y cuántas visitas pasaron por el pago desde entonces. Con eso se acota qué clientes pueden estar afectados. Sin ese análisis solo queda avisar a todos.
4. Cierra la entrada y cambia las claves
Actualiza PrestaShop y los módulos vulnerables, o quita los que no tengan arreglo, y cambia las contraseñas del back office, de la base de datos, del FTP y del hosting. Limpiar sin actualizar deja la puerta abierta, y actualizar sin limpiar deja el skimmer dentro. Hacen falta las dos cosas.
5. Avisa a quien toca
A tu banco o a la pasarela de pago, que te dirán cómo proceder con las tarjetas. A la Agencia Española de Protección de Datos, en 72 horas desde que lo sabes, si hay riesgo para tus clientes. Se puede notificar con lo que tengas y completarlo después. Y a los propios clientes afectados cuando el riesgo para ellos es alto, que con tarjetas robadas lo suele ser.
Actualizar o rehacer la tienda
Si tu tienda está en 1.7, lo razonable es subir como mínimo a la última 1.7.8, que es un salto dentro de la misma rama. Si está en 1.6, o si tiene muchos módulos sin mantener, puede que actualizar cueste casi lo mismo que montar una tienda nueva en PrestaShop 8 o 9. Nosotros lo valoramos siempre con una copia de ensayo antes de tocar la tienda real, y te decimos qué haríamos. Lo contamos en actualizar PrestaShop.
Cuánto cuesta
La limpieza de una tienda PrestaShop con nosotros parte de 390 € + IVA. Incluye el análisis de los registros para saber si salieron datos y desde cuándo, que es lo que necesitas para decidir a quién avisar. Si luego quieres alojar la tienda con nosotros, nuestro hosting para PrestaShop lleva la vigilancia de ficheros incluida.
Si crees que tu tienda está afectada, llámanos al 986 06 02 70. Es de las pocas situaciones en las que conviene llamar antes que escribir. Tienes todo el servicio explicado en malware en tiendas PrestaShop.