Dans Toxcore, une implĂ©mentation de rĂ©fĂ©rence du protocole de messagerie P2P Tox, une vulnĂ©rabilitĂ© (CVE-2021-44847) a Ă©tĂ© identifiĂ©e, permettant potentiellement d'initier l'exĂ©cution de code lors du traitement d'un paquet UDP spĂ©cialement formatĂ©. Tous les utilisateurs d'applications basĂ©es sur Toxcore dont le transport UDP n'est pas dĂ©sactivĂ© sont affectĂ©s. Une attaque suffit d'envoyer un paquet UDP en connaissant l'adresse IP, le port rĂ©seau et la clĂ© DHT ouverte de la victime (ces informations Ă©tant accessibles publiquement dans DHT, l'attaque pourrait ĂȘtre rĂ©alisĂ©e contre n'importe quel utilisateur ou nĆud DHT).
Le problÚme se manifestait dans les versions de toxcore de 0.1.9 à 0.2.12 et a été corrigé dans la version 0.2.13. à ce jour, seul le projet qTox a publié une mise à jour corrigeant la vulnérabilité parmi les applications clientes. Comme solution de contournement pour se protéger, il est possible de désactiver l'utilisation de l'UDP tout en conservant le support du TCP.
La vulnĂ©rabilitĂ© provient d'un dĂ©bordement de mĂ©moire tampon dans la fonction handle_request(), rĂ©sultant d'un calcul incorrect de la taille des donnĂ©es dans le paquet rĂ©seau. En particulier, la longueur des donnĂ©es chiffrĂ©es Ă©tait dĂ©terminĂ©e dans le macro CRYPTO_SIZE, dĂ©fini comme «1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE», utilisĂ© par la suite dans l'opĂ©ration de soustraction «length â CRYPTO_SIZE». En raison de l'absence de parenthĂšses dans le macro, au lieu de soustraire la somme de toutes les valeurs, on effectuait une soustraction de 1 et une addition des autres parties. Par exemple, au lieu de «length â (1 + 32 * 2 + 24)», la taille du tampon Ă©tait calculĂ©e comme «length â 1 + 32 * 2 + 24», ce qui entraĂźnait l'Ă©crasement des donnĂ©es dans la pile, au-delĂ de la limite du tampon.
Source : opennet.ru
