Disponible pour missions & renforts d’agence · Réponse rapide, par la personne qui intervient

Le formulaire de paiement s’affiche deux fois pendant la commande

Un client saisit sa carte, la page se recharge, et le vrai formulaire de paiement lui redemande les mêmes informations : cette double saisie n’est pas un bug d’affichage, c’est la signature d’un vol de données de carte côté navigateur.

Décrire mon problème Discuter sur WhatsApp

Pourquoi la double saisie est le symptôme le plus fiable

Un client vous écrit qu’il a dû saisir deux fois sa carte : la première page a semblé se recharger, puis le formulaire de paiement habituel lui a redemandé les mêmes informations. La commande est bien passée, le montant est correct, un seul débit apparaît. Côté back-office, rien ne cloche.

C’est précisément la signature d’une technique que Sansec a documentée en février 2026 sous le nom de « double-tap skimming », détectée le 16 février 2026 sur la boutique d’une chaîne de supermarchés figurant dans le top 10 mondial — environ 100 milliards d’euros de chiffre d’affaires annuel, plus de 10 000 magasins dans 25 pays — dont une partie de l’infrastructure e-commerce tourne sous PrestaShop. Un faux formulaire de paiement s’affiche d’abord et capture les données de carte, puis le vrai formulaire prend le relais et la commande se termine normalement. La plupart des clients acceptent cette double saisie sans se douter que les données ont déjà été volées.

Le symptôme est fiable parce qu’il est structurel. Le vol a besoin que le client remplisse un formulaire qui n’aboutit à rien, donc il a besoin de lui faire recommencer. Côté marchand, aucune alerte, aucun taux d’échec anormal, aucune ligne étrange dans les commandes : l’information ne remonte que par un client qui trouve ça bizarre, ou par un remboursement pour fraude un mois plus tard.

Ce qui doit vous faire ouvrir une vérification

  • Un client décrit avoir saisi ses informations de carte deux fois pendant une même commande.
  • Un client signale un écran de paiement dont l’apparence ne correspond pas tout à fait à celle que vous connaissez.
  • Plusieurs contestations pour fraude à la carte concernent des clients ayant commandé sur la même période.
  • Votre prestataire de paiement ou votre banque vous signale une concentration anormale de fraudes sur vos commandes.
  • Un fichier de thème porte une date de modification qu’aucune intervention de votre part n’explique.

Où regarder : les fichiers du thème, puis la base de données

Sansec cite deux endroits côté marchand. D’abord des balises de script injectées dans les fichiers du thème, en particulier _partials/head.tpl sur PrestaShop : c’est le gabarit chargé sur toutes les pages, y compris celles du tunnel de commande. Ensuite, du JavaScript qui surveille les champs de saisie et stocke les valeurs dans le localStorage du navigateur avec un préfixe, pour les reprendre et les envoyer ailleurs. Je ne publie pas l’adresse de destination.

La base de données est l’autre endroit à ouvrir. PrestaShop a documenté en janvier 2025 une vague d’attaques exploitant des injections SQL dans des modules tiers, pas dans le cœur, pour insérer du contenu malveillant dans la valeur de configuration PS_SHOP_NAME. Cette valeur est ensuite utilisée pour charger du JavaScript non autorisé qui capture les saisies des clients. La vérification recommandée est directe : lire PS_SHOP_NAME en base et vérifier qu’elle ne contient rien d’autre que le nom de votre boutique. PrestaShop recommande par ailleurs de mettre à jour tous les modules natifs et tiers, d’utiliser un préfixe de base de données personnalisé plutôt que ps_, et de déployer un pare-feu applicatif.

Les deux chemins racontent la même histoire : un gabarit de thème et une valeur de configuration sont deux endroits que personne ne relit jamais, et qui décident pourtant de ce qui s’exécute sur la page de paiement.

Le paiement hébergé chez le prestataire ne met pas à l’abri

Beaucoup de marchands considèrent le sujet réglé parce que la saisie de carte se fait dans un cadre ou sur une page hébergée par le prestataire de paiement, et que les numéros ne transitent jamais par leur serveur. C’est exact pour le formulaire lui-même. Ça ne l’est pas pour la page qui l’entoure.

Dans le scénario de la double saisie, le code injecté n’attaque pas le champ du prestataire : il affiche sa propre surcouche avant, dans la page que vous contrôlez. Le client voit un écran de paiement crédible, dans sa langue et à votre marque — Sansec note que ces surcouches sont désormais soigneusement localisées et que les outils d’IA générative en accélèrent la production. Tant que la page qui héberge le paiement peut être modifiée, l’intégration hébergée ne protège pas du vol.

Ce que je regarde, dans cet ordre

  1. Comparer les fichiers du thème à une référence saine

    Une copie de déploiement, une sauvegarde antérieure ou un dépôt Git servent de point de comparaison. Toute balise de script ajoutée dans un gabarit chargé sur toutes les pages est à traiter comme une compromission jusqu’à preuve du contraire.

  2. Relever les dates de modification sur le serveur

    Les fichiers modifiés récemment sans intervention de votre part cadrent la fenêtre de l’incident : ils donnent une date de début à chercher dans les journaux d’accès et dans l’historique des connexions au back-office.

  3. Lire la valeur PS_SHOP_NAME en base

    Sur PrestaShop, cette valeur de configuration doit contenir le nom de la boutique et rien d’autre. Tout fragment de balise, de script ou d’adresse à cet endroit est un signal direct, et il oriente vers un module tiers vulnérable comme point d’entrée.

  4. Inventorier les scripts réellement chargés sur la page de paiement

    Ouvrez le tunnel de commande dans un navigateur et listez les scripts chargés. Chacun doit se rattacher à un module, à un thème ou à un outil que vous avez décidé d’installer. Ce que vous ne pouvez pas rattacher doit être justifié avant d’être laissé en place.

  5. Traiter les accès avant les fichiers

    Nettoyer un gabarit sans renouveler les accès (back-office, FTP/SFTP, base de données, hébergement) revient à laisser la porte ouverte : le code réapparaît. Sur le cas documenté par Sansec, le skimmer était toujours actif le 20 février 2026, après six tentatives de notification. Ce type d’infection ne s’arrête pas tout seul.

Ce que cette page ne contient pas

Je n’écris ici aucune méthode permettant de reproduire l’attaque, aucun code injecté, aucune adresse de destination et aucun moyen de repérer des boutiques vulnérables. Cette page sert à constater, vérifier et corriger, pas à outiller qui que ce soit.

Si l’un des signes décrits est présent, la suite n’est pas la correction d’un fichier isolé : c’est un nettoyage complet, le renouvellement de tous les accès, et la mise en place d’un contrôle d’intégrité sur la page de paiement pour que la prochaine modification soit détectée le jour même, pas un mois plus tard par une contestation bancaire.

La suite, selon ce que vous avez trouvé

Décrivez votre besoin en 1 minute

Quelques questions ciblées pour que je vous réponde avec une estimation, pas avec un questionnaire de plus.

Qu’avez-vous constaté ?
Quelle plateforme ?
Depuis quand le problème est-il constaté ? (facultatif)

Plus l’infection est ancienne, plus elle a pu se propager dans les fichiers et la base de données.

Disposez-vous d’une sauvegarde saine ?

Une sauvegarde antérieure à l’infection change complètement la méthode de remise en état.

Indiquez au moins un e-mail ou un téléphone pour que je puisse vous répondre.

Indiquez au moins un e-mail ou un téléphone pour que je puisse vous répondre.

Questions fréquentes

Un seul client s’est plaint, faut-il vraiment tout vérifier ?
Oui. Un vol de données côté navigateur ne laisse aucune trace dans vos commandes. Un signalement isolé est souvent le seul retour que vous aurez sur un problème qui touche tout le monde.
Mon prestataire de paiement m’aurait prévenu, non ?
Pas nécessairement. Dans ce scénario, les données sont capturées avant d’arriver chez lui, dans la page de votre boutique. De son côté, la transaction est parfaitement normale.
Est-ce que cela ne concerne que PrestaShop ?
Non. Sansec décrit un squelette de logiciel malveillant réutilisable, qui prévoit des intégrations pour WordPress, Magento, PrestaShop et OpenCart. Le symptôme de la double saisie est le même quelle que soit la plateforme.
Suffit-il de nettoyer le fichier de thème modifié ?
Non. Tant que le point d’entrée n’est pas identifié et que tous les accès ne sont pas renouvelés, le code revient. C’est la partie longue du travail, et c’est celle qui décide du résultat.
Comment répondre concrètement aux exigences 6.4.3 et 11.6.1 ?
En tenant un inventaire écrit des scripts autorisés sur la page de paiement, en contrôlant leur intégrité, et en mettant en place une détection qui alerte quand les en-têtes HTTP ou le contenu de cette page changent dans le navigateur du client.
Dois-je fermer la boutique le temps de la vérification ?
Si la double saisie est confirmée par un client, oui : chaque commande passée pendant la vérification expose une carte de plus. Une page de maintenance sur le tunnel de commande coûte moins cher qu’une série de contestations.