Race Condition
hackingDéfinition
Les race conditions dans les applications web (Web Race Conditions) surviennent quand deux requêtes HTTP simultanées interagissent avec un état partagé non protégé par des verrous atomiques appropriés, permettant à un attaquant d'obtenir des avantages illégitimes en exploitant la fenêtre de temps entre une vérification et une action (time-of-check to time-of-use, TOCTOU). Les exemples classiques incluent : le double-spend (transférer le même montant d'argent vers deux comptes simultanément avant que le solde soit débité), l'utilisation multiple d'un coupon à usage unique (envoyer 100 requêtes simultanées d'activation du coupon avant que le premier enregistre l'utilisation), la création de comptes en double (contourner les vérifications d'unicité d'email), et le bypass de limites (faire des achats simultanés qui dépassent le stock ou la limite par compte). La détection et l'exploitation des race conditions web sont facilitées par l'outil Turbo Intruder (extension Burp Suite) qui permet d'envoyer des requêtes avec une précision temporelle très élevée. La technique 'Single Packet Attack' d'Albinowax (James Kettle) envoie toutes les requêtes dans le même paquet TCP, éliminant les variations de latence réseau et maximisant la simultanéité. Des race conditions plus subtiles incluent : les races sur des tokens de vérification (email confirmation, password reset) qui ne sont pas invalidés atomiquement, les races sur des sessions multi-steps (checkout multi-page), et les races sur des opérations de fichiers (deux processus accèdent au même fichier temporaire). La correction nécessite l'utilisation de transactions de base de données avec verrouillage approprié (SELECT FOR UPDATE, advisory locks), des opérations atomiques (INCR Redis, opérations CAS - Compare and Swap), et des idempotency keys pour les opérations critiques.
Fonctionnement
Test de race condition sur un coupon avec Turbo Intruder : configurer la requête d'application du coupon, utiliser le script 'race_single_packet_attack.py', définir 20 requêtes simultanées. Avec 'Send all requests in one packet' : toutes arrivent au serveur simultanément. Si plusieurs requêtes passent la vérification avant que l'une marque le coupon comme utilisé, le coupon est appliqué plusieurs fois. Observer les réponses : plusieurs 200 OK avec 'coupon applied' confirment la race condition.
Exploitation offensive
Les race conditions dans les applications fintech (transferts, points de fidélité, remises) ont un impact financier direct et mesurable. Des bug bounty ont récompensé des race conditions permettant le double-spend sur des plateformes de crypto et des systèmes de points. La Single Packet Attack de James Kettle a transformé les tests de race conditions d'une technique aléatoire en une méthode reproductible et fiable.
Détection et mitigation
Utiliser des transactions atomiques de base de données avec un niveau d'isolation approprié (SERIALIZABLE pour les opérations critiques). Pour les opérations idempotentes, utiliser des clés d'idempotence uniques côté client et stocker en cache les résultats. Redis INCR et DECR sont atomiques et appropriés pour les compteurs. Les tests de race conditions devraient être inclus dans les tests de sécurité des fonctionnalités financières.
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés.
Un projet cybersécurité ?
Expert dispo · Réponse 24h