Débordement de tampon dans Toxcore exploité en envoyant un paquet UDP

Une vulnérabilité (CVE-2-2021) a été identifiée dans Toxcore, l'implémentation de référence du protocole de messagerie Tox P44847P, qui pourrait potentiellement déclencher l'exécution de code lors du traitement d'un paquet UDP spécialement conçu. La vulnérabilité affecte tous les utilisateurs d'applications basées sur Toxcore dont le transport UDP n'est pas désactivé. Pour attaquer, il suffit d'envoyer un paquet UDP en connaissant l'adresse IP, le port réseau et la clé DHT publique de la victime (cette information est publiquement disponible dans la DHT, c'est-à-dire que l'attaque aurait pu être faite sur n'importe quel utilisateur ou hôte DHT) .

Le problème est apparu dans les versions 0.1.9 à 0.2.12 de toxcore et a été corrigé dans la version 0.2.13. Parmi les applications clientes, seul le projet qTox a jusqu'à présent publié une mise à jour avec l'élimination de la vulnérabilité. Pour contourner le problème de sécurité, vous pouvez désactiver l'utilisation d'UDP tout en laissant la prise en charge de TCP.

La vulnérabilité est causée par un dépassement de mémoire tampon dans la fonction handle_request(), qui se produit en raison d'un calcul incorrect de la taille des données dans le paquet réseau. En particulier, la longueur des données chiffrées a été déterminée dans la macro CRYPTO_SIZE définie comme "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", qui a ensuite été utilisée dans l'opération de soustraction "longueur - CRYPTO_SIZE". En raison de l'absence de parenthèses dans la macro, au lieu de soustraire la somme de toutes les valeurs, soustrayez 1 et ajoutez les parties restantes. Par exemple, au lieu de "longueur - (1 + 32 * 2 + 24)", la taille du tampon a été calculée comme "longueur - 1 + 32 * 2 + 24", ce qui a conduit à écraser les données sur la pile qui était en dehors du tampon frontière.

Source: opennet.ru

Ajouter un commentaire