jueves, 28 de abril de 2011

Desbordamiento de enteros en PHP 5.x

Alexander Gavrun ha publicado en su blog personal un fallo de seguridad que ha descubierto en la función 'phar_parse_tarfile' de PHP 5.

'phar' es una extensión de PHP concebida para empaquetar aplicaciones PHP y facilitar así su distribución e instalación en otros sistemas. Proporciona además una abstracción para manipular ficheros ZIP y TAR.

El fallo se encuentra en el fichero 'ext\phar\tar.c'. Existe un error de programación que introduce un desbordamiento de enteros durante el manejo de las cabeceras de los ficheros TAR. Un atacante puede manipular el valor 'entry.filename_len' al haber sido asignado después de operar con el resultado de la función 'phar_tar_number' que utiliza como argumento el 'header->size'.

Al llamar a la función 'php_stream_read' se intentaría copiar datos a un buffer que no ha sido previamente reservado, lo que provocaría una denegación de servicio y potencialmente permitiría ejecutar código arbitrario.

Alexander Gavrun ha publicado una prueba de concepto en su blog, codificada en Base64. Hasta el momento php.net no ha publicado ninguna solución oficial.

Se recomienda no procesar con esta función archivos TAR en los que no se confíe.


Alejandro J. Gómez López
agomez@hispasec.com


Más información:

PHP (phar extension) heap overflow
http://0x1byte.blogspot.com/2011/04/php-phar-extension-heap-overflow.html

No hay comentarios:

Publicar un comentario en la entrada