Le formjacking expliqué : comment les attaquants volent les données de carte sur les pages de paiement
Le formjacking ne nécessite pas une compromission de votre serveur — un seul script tiers compromis suffit. Voici l'anatomie complète et ce qui arrête réellement l'attaque.
Le formjacking consiste à intercepter la soumission d'un formulaire HTML au moyen d'un JavaScript injecté qui redirige les valeurs vers un serveur contrôlé par l'attaquant. Contrairement à une compromission classique, votre serveur d'origine reste souvent intact — le code s'exécute entièrement dans le navigateur du visiteur, sur les données qu'il saisit.
La chaîne d'attaque est presque toujours identique. L'attaquant compromet une dépendance tierce — un tag manager, un widget de test A/B, un script de chat ou un package npm — et ajoute un listener à l'événement de soumission du formulaire de paiement ou de connexion. À la soumission, le script lit les champs (numéro de carte, CVV, e-mail, mot de passe) et effectue un POST en arrière-plan vers un domaine récemment enregistré, avant ou simultanément à la soumission légitime. L'utilisateur ne remarque rien.
Pourquoi les WAF ne le détectent pas : un reverse proxy ne voit que les requêtes vers votre origin. Le POST d'exfiltration va vers le domaine de l'attaquant, pas vers vous — il ne passe donc jamais par le WAF. Les scanners de fichiers à base de signatures le manquent également, car le code malveillant ne se trouve pas dans vos fichiers, mais dans un script chargé depuis un hôte externe à l'exécution.
Comment ExploitShield le détecte : chaque soumission de formulaire effectuée par le navigateur headless est capturée au niveau réseau via le proxy MITM. L'hôte de destination est enrichi avec l'âge WHOIS, les données RDAP, la réputation IP et plus de 500 listes de blocage. Un nouveau point d'exfiltration — un domaine âgé de quelques jours — est signalé dans ses premières heures de vie, avec le script initiateur, le fichier et la ligne.
La leçon pratique pour les équipes e-commerce : faites l'inventaire de chaque script tiers sur vos pages de paiement et de connexion, appliquez Subresource Integrity où c'est possible, et surveillez les destinations sortantes lors d'une exécution réelle dans un navigateur. C'est le seul endroit où le formjacking est visible avant qu'un client ne perde ses données de carte.