Situation de compétition / TOCTOU Race condition
Faille où l'état change entre le moment où un programme VÉRIFIE quelque chose et celui où il l'UTILISE (Time-Of-Check to Time-Of-Use). L'attaquant exploite cette minuscule fenêtre pour glisser un changement après la vérification mais avant l'utilisation.
Exemple classique : un programme vérifie « cet utilisateur a-t-il le droit de lire le fichier X ? » (vérification), puis ouvre X (utilisation). Entre les deux, l'attaquant remplace X par un lien symbolique vers un fichier secret : la vérification portait sur le fichier anodin, l'utilisation frappe le secret. Plus généralement, toute séquence « vérifier puis agir » non atomique est exploitable si l'attaquant peut modifier l'état dans l'intervalle. Autres cas : le double retrait sur un solde (vérifier le solde, débiter — exécuté deux fois en parallèle), le TOCTOU sur système de fichiers, les courses dans l'authentification. Défense : rendre l'opération atomique (ouvrir le fichier puis vérifier le descripteur ouvert, pas le chemin), utiliser verrous et transactions, ne jamais supposer que l'état reste inchangé entre deux étapes. Une classe de bugs subtile mais sérieuse, cousine de l'IDOR et de la désérialisation non sécurisée.