Vulnerabilidad en Python, que se manifiesta al procesar números fraccionarios no verificados en ctypes

Están disponibles las versiones corregidas del lenguaje de programación Python 3.7.10 y 3.6.13, que han solucionado una vulnerabilidad (CVE-2021-3177) que podría llevar a la ejecución de código al procesar números de punto flotante no verificados en los controladores que llaman a funciones en C mediante el mecanismo ctypes. El problema también afecta a las ramas de Python 3.8 y 3.9, pero las actualizaciones para ellas aún están en estado de candidato para publicación (el lanzamiento está programado para el 1 de marzo).

El problema es causado por un desbordamiento de buffer en la función ctypes PyCArg_repr(), que ocurre debido al uso inseguro de sprintf. En particular, el procesamiento del resultado de la ejecución de la conversión ‘sprintf(buffer, "", self->tag, self->value.b)’ utilizaba un buffer estático de 256 bytes ("char buffer[256]"), mientras que el resultado podría exceder este valor. Para verificar la vulnerabilidad de las aplicaciones, se puede intentar pasar el valor "1e300", que al procesarse mediante c_double.from_param provocará un fallo, ya que el número resultante contiene 308 dígitos y no cabe en un buffer de 256 bytes. Ejemplo de código problemático: import ctypes; x = ctypes.c_double.from_param(1e300); repr(x)

El problema permanece sin solución en Debian, Ubuntu y FreeBSD, pero ya ha sido solucionado en Arch Linux, Fedora y SUSE. En RHEL, la vulnerabilidad no se manifiesta debido a la construcción de paquetes en modo FORTIFY_SOURCE, que bloquea tales desbordamientos de buffer en funciones de cadena.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster