Retour au glossaireCyber

Condition de course (race condition)

Vulnérabilité logicielle dans laquelle le comportement d'un programme dépend de l'ordre ou de la temporalité imprévue d'événements concurrents, qu'un attaquant peut exploiter pour modifier l'état du système entre une vérification et son utilisation.

Définition

Une condition de course surgit quand deux processus ou threads accèdent simultanément à une ressource partagée sans synchronisation adéquate, et que l'issue dépend de la séquence exacte dans laquelle les opérations s'exécutent. La variante la plus courante est appelée TOCTOU, de l'anglais time-of-check to time-of-use : un programme vérifie l'état d'une ressource, par exemple l'existence ou les permissions d'un fichier, puis l'utilise, et l'attaquant s'intercale dans ce bref intervalle pour substituer la ressource. En cryptographie, les attaques temporelles sont une sous-catégorie particulièrement subtile : en mesurant avec précision les variations du temps de réponse d'une opération cryptographique, un adversaire peut inférer des informations sur la clé secrète, sans jamais interagir directement avec celle-ci. Cette classe d'attaque, théorisée par Paul Kocher en 1996 sur les implémentations RSA, a depuis lors mis en évidence la nécessité d'un code en temps constant pour toute primitive cryptographique sensible. Dans le monde de la finance décentralisée, les conditions de course ont une dimension économique directe : les arbitragistes de premier rang et les attaquants MEV, pour Miner Extractable Value, exploitent la fenêtre entre la soumission d'une transaction dans le mempool et son inclusion dans un bloc pour glisser leur propre transaction en priorité, phénomène dit du front-running. Pour les assureurs et les éditeurs de logiciels, la condition de course est une classe de vulnérabilité difficile à détecter par l'audit statique de code, souvent absente des scans CVE standards et sous-représentée dans les questionnaires de souscription cyber, ce qui en fait un risque résiduel non mesuré dans de nombreux portefeuilles de lignes financières et RC produit.

Exemple

En 2016, la vulnérabilité exploitée dans The DAO sur Ethereum était une condition de course : une fonction de retrait ne mettait à jour le solde qu'après avoir transféré les fonds, permettant à un attaquant de déclencher récursivement la même fonction avant la mise à jour. Le résultat fut le détournement de 60 millions de dollars en ether, menant à un hard fork controversé de la chaîne pour annuler la transaction.

Termes associés
Également connu sous

race condition, condition de course, TOCTOU, time-of-check time-of-use, vulnérabilité temporelle