Uma vulnerabilidade no Python, ocorrendo ao processar números de ponto flutuante não verificados em ctypes

Atualizações corretivas para as versões da linguagem de programação Python 3.7.10 e 3.6.13 estão disponíveis, as quais corrigem uma vulnerabilidade (CVE-2021-3177) que pode levar à execução de código ao lidar com números de ponto flutuante não validados em manipuladores que chamam funções na linguagem C usando o mecanismo ctypes. O problema também afeta as versões Python 3.8 e 3.9, mas as atualizações para essas versões ainda estão em estado de candidato a lançamento (o lançamento está agendado para 1º de março).

O problema é causado por um estouro de buffer na função ctypes PyCArg_repr(), que ocorre devido ao uso inseguro de sprintf. Especificamente, um buffer estático de 256 bytes (‘char buffer[256]’) foi alocado para processar o resultado da execução da conversão ‘sprintf(buffer, «<cparam ‘%c’ (%d)>», self->tag, self->value.b)’, enquanto o resultado poderia exceder esse valor. Para verificar a vulnerabilidade de aplicativos, você pode tentar passar o valor ‘1e300’, que ao ser processado pelo método c_double.from_param levará a uma falha, pois o número resultante contém 308 dígitos e não cabe no buffer de 256 bytes. Exemplo de código problemático: import ctypes; x = ctypes.c_double.from_param(1e300); repr(x)

O problema permanece não resolvido no Debian, Ubuntu e FreeBSD, mas já foi corrigido no Arch Linux, Fedora e SUSE. No RHEL, a vulnerabilidade não se manifesta devido à montagem de pacotes no modo FORTIFY_SOURCE, que bloqueia tais estouros de buffer em funções de string.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster