Qu'est-ce qu'une race condition?
Une course se produit lorsque plusieurs processus accéder et de manipuler les mêmes données simultanément, et le résultat de l'exécution dépend de l'ordre dans lequel l'accès a lieu.
A condition de course est de l'intérêt pour un hacker lors de la course peut être utilisée pour obtenir le privilège d'accès au système.
Prenons l'extrait de code suivant qui illustre une race condition:
if (accès ( "/ tmp / fichier de données", R_OK) == 0) (
fd = open ( "/ tmp / datafile
processus (fd);
close (fd);
Ce code crée le fichier temporaire / tmp / fichier de données, puis l'ouvre.
Le potentiel de la race se produit entre l'appel d'accès () et de l'appel à open ().
Si un attaquant peut remplacer le contenu de / tmp / fichier de données entre l'accès () et ouvert () fonctions, il peut manipuler les actions du programme qui utilise ce fichier de données. C'est la course.
Il peut être difficile d'exploiter une race condition, parce que vous avez mai à «courir la course" nombre de fois avant de «gagner». Vous mai ont à exécuter le programme vulnérable et un outil de test de la vulnérabilité des milliers de fois avant d'obtenir le expolit code à exécuter après l'ouverture de la vulnérabilité et la vulnérabilité devant la ferme. Il est parfois possible de donner à l'attaque une longueur d'avance en utilisant des «nice», à réduire la priorité de la légitime suid programme.
L'utilisation abusive de la fonction de demande d'accès (), chown (), chgrp (), chmod (), mktemp (), tempnam (), tmpfile (), et tmpnam () sont les causes normal d'une race condition.
|






