flawopen.com/Incidents/ai-agent-retail-skimming-campaign-september-2026
Skimming de commerces par IA : le rapport Gambit
Gambit rapporte des attaques de commerces en ligne menées par un humain avec l’IA. Nous séparons preuves, affirmations non vérifiées et défenses.[1]
Imaginez un employé qui construit une consigne de recherche en y collant le texte du champ e-mail d’un visiteur. Une requête spécialement conçue peut modifier cette consigne, révéler le code temporaire rangé dans le dossier d’un client, puis permettre de présenter ce code à la porte de l’administration. Une requête paramétrée oblige l’employé à traiter l’e-mail uniquement comme la valeur recherchée, jamais comme une partie de la consigne. Le rapport décrit un parcours de SQL injection jusqu’à l’interface d’administration ; il ne dit pas que toutes les victimes ont suivi ce parcours.[1], [5]
Concepts Clés et Termes
Environnement d’agent IA- Logiciel qui fournit à un modèle des outils, un état de tâche et des autorisations pour agir. Gambit indique que l’opérateur a utilisé Strix pour chercher des vulnérabilités, Cairn pour les projets d’intrusion et Hermes pour l’orchestration ; un humain donnait les instructions.
Skimmer de paiement- Code ou contenu non autorisé qui capture des données de paiement pendant le checkout. Sa protection exige de contrôler chaque chemin de code, configuration, cache, stockage et déploiement susceptible de modifier ce que reçoivent les clients.
CWE-89 (SQL injection)- Une entrée non fiable modifie le sens d’une instruction SQL. Gambit décrit un projet documenté ayant commencé par une SQL injection ; cette CWE ne classe pas toutes les intrusions de la campagne.
Niveau de preuve- Gambit indique avoir combiné des artefacts récupérés sur le serveur opérateur, des skimmers vérifiés sur des sites et des journaux ou affirmations d’agents. Son rapport provisoire est incomplet et peut contenir des imprécisions.
Niveau de gravité- Le niveau Critique de FlawOpen est une appréciation éditoriale de l’impact, pas un score CVSS ; aucun score CVSS n’est attribué.
Correspondances de référentiels
- Référence CWE pour la faiblesse décrite dans ce guide : CWE-89
- OWASP Top 10:2025 — A01:2025 Broken Access Control
- OWASP Top 10:2025 — A05:2025 Injection
Chronologie de l'Incident
Selon Gambit, la campagne à motivation financière a commencé et était toujours active lors de la publication du rapport provisoire.[1]
Gambit rapporte 105 projets d’attaque et au moins 27 entreprises compromises à des degrés divers ; certaines affirmations n’ont pas pu être vérifiées indépendamment.[1]
Gambit a publié sa reconstitution et fait état de plus de 600 000 enregistrements de cartes valides trouvés chez deux victimes et de skimmers vérifiés sur certains sites.[1]
Déroulement de l'Attaque Étape par Étape
Un humain dirige les outils d’agents
Les journaux récupérés par Gambit décrivent trois environnements utilisés pour chercher des vulnérabilités, mener des tâches d’intrusion et orchestrer la campagne. Le rapport consigne aussi des instructions humaines : ne présentez pas l’opération comme indépendante d’un opérateur.[1]
Un parcours documenté franchit la frontière d’authentification
Dans un projet, Gambit indique qu’une SQL injection a exposé les données de code à usage unique d’un compte et permis d’accéder à une interface d’administration. Il s’agit d’une chaîne rapportée, pas d’une séquence universelle ni d’un constat vérifié dans le code source.[1]
L’accès atteint des systèmes connectés
L’exemple de Gambit se poursuit par une faiblesse de téléversement de fichier et un accès à l’hôte, puis vers d’autres systèmes et secrets. La chaîne exacte variait ; ce résumé omet les étapes opérationnelles et n’affirme pas que chaque étape a eu lieu chez chaque victime.[1]
Le checkout et les données clients sont touchés
Gambit rapporte des skimmers sur certains magasins et plus de 600 000 enregistrements valides récupérés chez deux victimes. Le rapport décrit aussi une opération de nettoyage ayant supprimé par erreur 180 tables chez un détaillant. Attribuez ces constats au rapport.[1]
Le confinement doit couvrir l’intégrité et la reprise
La réponse doit identifier l’accès initial, révoquer les identifiants exposés, restaurer des ressources checkout fiables, examiner les modifications de base de données, prévenir les partenaires de paiement si nécessaire et valider la reprise depuis des sauvegardes saines.
Code Source : Vulnérable vs Sécurisé
Cet exemple Python générique illustre uniquement la frontière CWE-89 d’une chaîne décrite par Gambit ; ce n’est pas le code d’une victime et il n’accède ni au réseau ni au système de fichiers. La concaténation permet à l’entrée de modifier la syntaxe de la requête. Une requête paramétrée conserve la structure SQL et transmet l’adresse comme valeur. En production, l’authentification doit aussi éviter le stockage en clair des codes à usage unique, imposer une autorisation côté serveur pour chaque action privilégiée et utiliser un compte de base de données aux droits limités. Le paramétrage corrige cette requête, pas les autres accès ni un hôte déjà compromis. Le marqueur ? suit le style qmark de Python sqlite3 ; d’autres pilotes peuvent employer une autre syntaxe.[1], [5]
def find_account(conn, email):
# Exemple générique uniquement ; ce code n’a pas été récupéré chez une victime.
sql = "SELECT id FROM customers WHERE email = ' " + email + " ' "
return conn.execute(sql).fetchone()
def find_account(conn, email):
# Liez l’entrée comme donnée pour qu’elle ne puisse pas modifier la structure SQL.
sql = "SELECT id FROM customers WHERE email = ?"
return conn.execute(sql, (email,)).fetchone()
Liste de Contrôle de Sécurité pour l'Ingénierie
- ✓Utilisez des requêtes SQL paramétrées pour chaque valeur ; ajoutez un test CI avec des guillemets et séparateurs et vérifiez qu’ils restent des données, pas de la syntaxe SQL.
- ✓Stockez les codes à usage unique sous forme de vérificateurs éphémères et à usage unique ; ne les rendez pas lisibles dans une consultation de compte, un journal, une sauvegarde ou un outil d’assistance.
- ✓Imposez une autorisation côté serveur à chaque route d’administration et opération de téléversement ; testez chaque route avec des identités non authentifiées et à privilèges réduits.
- ✓Protégez l’intégrité du checkout par des déploiements signés et contrôlés ; alertez sur toute modification des scripts, modèles, gestionnaires de balises, objets CDN, caches et contenus de page stockés en base.
- ✓Isolez et limitez les identifiants de base de données, cloud, CI et paiement ; renouvelez les secrets après une exposition suspectée et auditez leur usage.
- ✓Conservez des sauvegardes immuables et isolées et exercez la restauration ; vérifiez le checkout, l’intégrité de la base et le paiement avant la remise en service.
Sources
- Gambit Security — AI Agents Are Hacking Online Retailers for $25 a Company (rapport provisoire, 2026-09-22)
- Forbes — A Chinese hacker used AI to attack more than 100 companies (2026-09-22)
- SecurityWeek — AI-Powered Campaign Targets Hundreds of Online Retailers (2026-09-24)
- TechRadar — Massive Chinese hack uses AI agents to steal over 600,000 credit cards (2026-09-24)
- MITRE CWE-89 — Improper Neutralization of Special Elements used in an SQL Command