Une condition de concurrence se produit lorsque plusieurs processus d'accès et de manipuler les mêmes données simultanément, et le résultat de l'exécution dépend de l'ordre particulier dans lequel l'accès a lieu.
Une condition de concurrence est d'intérêt pour un hacker quand la condition de concurrence peut être utilisé pour accéder au système privilégié.
Considérons le code suivant, qui illustre une situation de compétition:
if (access ( "/ tmp / fichier de données", R_OK) == 0) (
fd = open ( "/ tmp / fichier de données
processus (fd);
close (fd);
Ce code crée le fichier temporaire / tmp / fichier de données, puis il s'ouvre.
La condition de concurrence potentielle se produit entre l'appel à l'accès () et l'appel à open ().
Si un attaquant peut remplacer le contenu du fichier / tmp / fichier de données entre l'accès () et open () fonctions, il peut manipuler les actions du programme qui utilise ce fichier de données. Il s'agit de la course.
Il peut être difficile à exploiter une condition de concurrence, parce que vous avez mai pour «courir la course» plusieurs fois avant de «gagner». Vous mai-être exécuter le programme vulnérable et l'outil de test de vulnérabilité des milliers de fois avant d'obtenir le code à exécuter après expolit la vulnérabilité s'ouvre et se ferme avant que la vulnérabilité. Il est parfois possible de donner à l'attaque d'un avantage supplémentaire en utilisant `nice» pour baisser la priorité du programme suid légitime.
Une mauvaise utilisation de la fonction de demande d'accès (), chown (), chgrp (), chmod (), mktemp () (), tempnam, tmpfile (), et tmpnam () sont les causes normales d'une condition de course.
Nos amis sont à Qualys offre gratuitement des copies de la version électronique de gestion des vulnérabilités pour les nuls de Tech-FAQ lecteurs. Vulnerability Management for Dummies:
| Bookmark Qu'est-ce qu'une race condition?
Derniers messages blog |