Estouro de buffer no Toxcore explorado pelo envio de um pacote UDP

Toxcore, a implementação de referência do protocolo de mensagens Tox P2P, tem uma vulnerabilidade (CVE-2021-44847) que pode potencialmente desencadear a execução de código ao processar um pacote UDP especialmente criado. Todos os usuários de aplicativos baseados em Toxcore que não possuem o transporte UDP desabilitado são afetados pela vulnerabilidade. Para atacar, basta enviar um pacote UDP sabendo o endereço IP, porta de rede e chave DHT pública da vítima (esta informação está disponível publicamente em DHT, ou seja, o ataque pode ser realizado em qualquer usuário ou nó DHT).

O problema estava presente nas versões 0.1.9 a 0.2.12 do toxcore e foi corrigido na versão 0.2.13. Entre os aplicativos clientes, apenas o projeto qTox lançou até o momento uma atualização que elimina a vulnerabilidade. Como solução alternativa de segurança, você pode desabilitar o UDP enquanto mantém o suporte ao TCP.

A vulnerabilidade é causada por um buffer overflow na função handle_request(), que ocorre devido ao cálculo incorreto do tamanho dos dados em um pacote de rede. Especificamente, o comprimento dos dados criptografados foi determinado na macro CRYPTO_SIZE, definida como "1 + CRYPTO_PUBLIC_KEY_SIZE * 2 + CRYPTO_NONCE_SIZE", que foi posteriormente utilizada na operação de subtração "comprimento - CRYPTO_SIZE". Devido à ausência de parênteses na macro, ao invés de subtrair a soma de todos os valores, subtraiu 1 e somou as demais partes. Por exemplo, em vez de "comprimento - (1 + 32 * 2 + 24)", o tamanho do buffer foi calculado como "comprimento - 1 + 32 * 2 + 24", o que resultou na substituição de dados na pilha além do limite do buffer.

Fonte: opennet.ru

Adicionar um comentário