Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Race Condition

hacking

Dé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

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis