Desbordamento de búfer en Toxcore explotado enviando un paquete UDP

Toxcore, a implementación de referencia do protocolo de mensaxería Tox P2P, ten unha vulnerabilidade (CVE-2021-44847) que podería desencadear a execución de código ao procesar un paquete UDP especialmente elaborado. Todos os usuarios de aplicacións baseadas en Toxcore que non teñen o transporte UDP desactivado vense afectados pola vulnerabilidade. Para atacar, abonda con enviar un paquete UDP coñecendo o enderezo IP, o porto de rede e a clave DHT pública da vítima (esta información está dispoñible publicamente en DHT, é dicir, o ataque podería levarse a cabo en calquera usuario ou nodo DHT).

O problema estaba presente nas versións de toxcore 0.1.9 a 0.2.12 e solucionouse na versión 0.2.13. Entre as aplicacións cliente, só o proxecto qTox lanzou ata agora unha actualización que elimina a vulnerabilidade. Como solución de seguridade, pode desactivar UDP mantendo o soporte TCP.

A vulnerabilidade é causada por un desbordamento do búfer na función handle_request(), que ocorre debido a un cálculo incorrecto do tamaño de datos nun paquete de rede. En concreto, a lonxitude dos datos cifrados determinouse na macro CRYPTO_SIZE, definida como "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", que se utilizou posteriormente na operación de subtracción "longitud - CRYPTO_SIZE". Debido á ausencia de parénteses na macro, en lugar de restar a suma de todos os valores, resta 1 e sumou as partes restantes. Por exemplo, en lugar de "longitud - (1 + 32 * 2 + 24)", o tamaño do búfer calculouse como "longitud - 1 + 32 * 2 + 24", o que provocou que se sobrescribiron os datos na pila máis aló do límite do búfer.

Fonte: opennet.ru

Engadir un comentario