Desbordament de memòria intermèdia a Toxcore explotat enviant un paquet UDP

S'ha identificat una vulnerabilitat (CVE-2-2021) a Toxcore, la implementació de referència del protocol de missatgeria Tox P44847P, que podria desencadenar l'execució de codi quan es processa un paquet UDP especialment dissenyat. La vulnerabilitat afecta tots els usuaris d'aplicacions basades en Toxcore que no tenen el transport UDP desactivat. Per atacar, n'hi ha prou amb enviar un paquet UDP, coneixent l'adreça IP, el port de xarxa i la clau pública DHT de la víctima (aquesta informació està disponible públicament a DHT, és a dir, l'atac es podria haver fet a qualsevol usuari o host DHT) .

El problema va aparèixer a les versions de toxcore 0.1.9 a 0.2.12 i es va solucionar a la versió 0.2.13. De les aplicacions client, només el projecte qTox ha publicat fins ara una actualització amb l'eliminació de la vulnerabilitat. Com a solució de seguretat, podeu desactivar l'ús d'UDP mentre deixeu el suport TCP.

La vulnerabilitat és causada per un desbordament de memòria intermèdia a la funció handle_request(), que es produeix a causa d'un càlcul incorrecte de la mida de dades del paquet de xarxa. En particular, la longitud de les dades xifrades es va determinar a la macro CRYPTO_SIZE, definida com "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", que es va utilitzar més tard en l'operació de resta "longitud - CRYPTO_SIZE". A causa de la manca de parèntesis a la macro, en comptes de restar la suma de tots els valors, resteu 1 i sumeu les parts restants. Per exemple, en comptes de "longitud - (1 + 32 * 2 + 24)", la mida de la memòria intermèdia es va calcular com a "longitud - 1 + 32 * 2 + 24", cosa que va provocar sobreescriure les dades a la pila que estava fora de la memòria intermèdia. límit.

Font: opennet.ru

Afegeix comentari