CyberGlossary

Vulnérabilités

Condition de course

Aussi appelé: Bug de concurrence

Définition

Défaut où la sécurité ou la correction d'un système dépend du timing ou de l'ordre d'opérations concurrentes, permettant à un attaquant d'intercaler des actions et de contourner des contrôles.

Une condition de course apparaît lorsque deux ou plusieurs threads, processus ou acteurs accèdent à un état partagé sans synchronisation correcte, permettant à un attaquant de gagner une fenêtre temporelle pour observer un état partiel ou l'altérer entre opérations. Les variantes pertinentes pour la sécurité incluent les TOCTOU (vérifier-puis-utiliser), les ruptures d'atomicité en logique financière et les bugs de réentrance des gestionnaires de signaux. L'exploitation nécessite souvent un ordonnancement précis, des pools de threads pour marteler le noyau ou des astuces de système de fichiers (renames, symlinks). Défenses : verrous adéquats, transactions, compare-and-swap atomique, APIs à descripteur (openat, fstatat), conceptions idempotentes et outils comme ThreadSanitizer.

Exemples

  • CVE-2016-5195 (Dirty COW) — condition de course du noyau Linux dans la gestion COW.
  • Course du système de fichiers permettant de remplacer un fichier entre access() et open().

Termes liés