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
