lunes, 3 de mayo de 2010

Denegación de servicio a través de la función "php_dechunk" en PHP 5.3.x

Stefan Esser, conocido investigador de seguridad especializado en vulnerabilidades en el lenguaje de programación PHP, ha descubierto un fallo en la última versión publicada.

Se trata de un error de desbordamiento de entero en la función "php_dechunk" de "ext/standard/filters.c" al procesar ciertas peticiones HTTP. Esta función se usa para decodificar fragmentos (chunks) codificados de un flujo HTTP.

La función efectúa una comparación del tamaño del fragmento a decodificar y el búfer reservado, empleando para ello un entero con signo, "chunk_size", miembro de la estructura "_php_chunked_filter_data".

El uso de un entero positivo interpretado como negativo podría provocar la copia de datos, entre memorias intermedias reservadas en el heap, de tamaño entre 2 y 4 Gb, resultando en una corrupción de memoria y provocando que la aplicación deje de responder.

Esto podría permitir a un atacante remoto causar una denegación de servicio a través de peticiones HTTP especialmente manipuladas.

Según Esser, son vulnerables las versiones inferiores de la 5.3.2 a la 5.3 incluidas. No existe parche para esta vulnerabilidad.


David García
dgarcia@hispasec.com



No hay comentarios:

Publicar un comentario en la entrada