Différents processus peuvent interagir entre eux sans mesures adéquates. Ces attaques sont également connues sous le nom d'attaque de chèque, d'attaque à l'heure d'utilisation ou d'attaques TOC / TOU. Les vulnérabilités des conditions de course se trouvent en premier lieu en raison d'erreurs de programmation de base que les développeurs créent généralement, et ces échecs se sont révélés coûteux. Les entités malveillantes ont exploité des conditions de course à de nombreuses fins malveillantes, je.e., de l'obtention de bons gratuits pour voler de l'argent à partir de comptes en ligne et de sociétés d'investissement.
Supposons que deux threads d'exécution parallèle tentent d'augmenter la valeur d'une variable globale de 5. En fin de compte, alors, la variable globale aurait une valeur de 10. Cependant, si tous les threads s'exécutent simultanément, l'exécution peut être erronée sans verrous de ressources ni synchronisation. Lorsque le premier thread fait des manipulations à cette variable globale, le deuxième fil le lit et commence à faire d'autres manipulations. Dans ce cas, la valeur finale ne serait pas comme prévu.
Cela se produit car l'effet d'une terminaison de thread dépend du résultat de l'autre. Lorsque les deux threads seront exécutés simultanément, il y aura des conséquences imprévues.
Portée des attaques de la condition de course:
Imaginez que quelque chose d'un peu plus critique est en cours d'exécution par les deux fils de l'exemple ci-dessus, comme l'échange de l'argent entre les comptes bancaires. Pour envoyer l'argent correctement, le programme devra exécuter ces tâches dans cette séquence; Vérifiez s'il y a suffisamment de solde dans le compte de l'expéditeur, ajoutez de l'argent au compte du récepteur, puis déduisez le compte de l'expéditeur. Mais si vous soumettez simultanément deux demandes, vous pourrez peut-être déclencher une condition dans laquelle la séquence d'exécution du thread change. Dans une situation comme celle-ci, vous vous retrouverez avec un montant différent de celui prévu.
Egor Homakov a été trouvé par Egor Homakov sur le site Web de Starbucks. Il a découvert un moyen de créer une quantité infinie de crédit sur les chèques-cadeaux Starbucks gratuitement en utilisant différents navigateurs avec différents cookies.
L'attaque de fusion proéminente est un exemple de vulnérabilité des conditions de course. Dans l'attaque de fusion, la faiblesse est déclenchée par le traitement parallèle de la récupération des données à partir de la mémoire et de l'authentification de la question de savoir si un utilisateur est autorisé à accéder à la mémoire ou non. Ce défaut permet à un outil d'éviter les vérifications de privilèges standard qui séparent le mécanisme d'attaque de l'accès aux données du système d'exploitation. Cette échappatoire entraîne une autoriser tout processus non autorisé à afficher les données et les informations de toute autre adresse connectée à l'état de la progression actuelle dans la mémoire. Dans le processus d'exécution défectueux, les informations d'une adresse non approuvée seront fréquemment rapidement empilées dans le cache du CPU, à partir de laquelle les informations peuvent être récupérées.
Scénarios d'attaque réels:
En soumettant de nombreuses demandes au serveur Web en continu, vous pouvez rechercher et manipuler les conditions de course dans les applications Web. Si vous souhaitez voir si vous pouvez retirer plus d'argent que dans votre compte bancaire, en utilisant la fonction Curl, vous pouvez simultanément envoyer plusieurs demandes de retrait au serveur.
Curl (retirer 50000) et (retirer 50000) et (retirer 50000) et (retirer 50000) et (retirer 50000) et (retirer 50000)
Plus vous déposiez de demandes dans un bref délai, plus les chances que votre attaque fonctionne fonctionne.
De plus, si vous envoyez des demandes de suivi asynchrones, vous suivrez un utilisateur plusieurs fois au lieu d'envoyer une réponse d'erreur. je.e., Si vous ajoutez un faux en-tête contenant% s lors de la suppression des demandes à l'aide de Turbo Intruder et collez le code Python suivant:
def suitReqs (cible, listes de mots):Vous verrez un bouton d'attaque. Après avoir appuyé sur cela, l'intrus de turbo soumet 40 requêtes et analysent les codes d'état. Si vous voyez plusieurs réponses avec le statut généré 201, cela indique plusieurs fois que vous avez suivi la personne.
Il existe une vulnérabilité de la condition de course dans laquelle vous pouvez accéder à plusieurs consoles offertes aux comptes gratuits. La plupart des sites Web qui fournissent des consoles gratuits ont des comptes gratuits, des forfaits standard et premium. Les comptes gratuits ne fournissent que 2 ou 3 consoles par utilisateur. Pour rompre cette limite et utiliser des consoles illimitées, intrusez la demande GET en utilisant plusieurs fois les charges utiles, comme 100 ou 200. Puis supprimez manuellement l'une des consoles de l'interface utilisateur pendant que les threads fonctionnent.
Conclusion:
Comme moyen de saper les contrôles d'accès, les conditions de course sont incluses. Tout programme qui dépend des mécanismes de contrôle d'accès peut être vulnérable. La plupart du temps, sur les sites Web des institutions financières, les pirates exploitent les conditions de course. Car cela pourrait entraîner des avantages financiers illimités pour le pirate si une condition de course pouvait être découverte sur une caractéristique vitale telle que le retrait en espèces, le transfert d'argent ou le paiement de la carte de crédit. Les plateformes de commerce électronique, les jeux vidéo et les services de vote en ligne sont d'autres technologies à haut risque. La mise en œuvre de la concurrence sûre est le secret pour éviter les conditions de course. Et vous pouvez également utiliser des serrures de ressources. Il y aura également une fonction de verrouillage intégrée pour les langages de programmation avec des capacités de concurrence qui aident à prévenir de telles conditions. De plus, en suivant les normes de codage sécurisées, je.e., Le concept et le code d'audit des moindres privilèges diminueront les chances de violation du programme.