Revelación de información sensible y subida de archivos arbitrarios en PHP

Se han descubierto dos vulnerabilidades en PHP (versiones 4 y 5) que pueden ser explotadas por usuarios maliciosos para revelar información sensible o, potencialmente, comprometer un sistema afectado.

La primera de las vulnerabilidades afecta a las versiones de la 4.1.2 a la 5.0.1 y se debe a un problema de tamaños de variables al tratar con las variables GET, POST y COOKIE dentro del archivo ‘php_variables.c’. Esto puede ser explotado mediante el envío de un nombre de parámetro especialmente creado a tal efecto con un corchete abierto para ver memoria del heap cuando ciertas funciones se usan dentro de un script. Un ejemplo sería el siguiente: abc[a][

El segundo problema, confirmado en la versión 5.0.1 y anteriores, se debe a un error con el que se puede sobreescribir las matrices asociadas a $_FILES utilizando una cabecera Content-Disposition especialmente formada a tal efecto. En combinación con escaladas de directorios, esta vulnerabilidad podría ser explotada para subir archivos arbitrarios y en última instancia para ejecutar código arbitrario. Un ejemplo sería el siguiente: Content-Disposition: form-data; name=”userfile”; filename=”../../../test.php”

La explotación con éxito requiere un script PHP que utilice el array $_FILES para, por ejemplo, mover archivos descargados.

Las vulnerabilidades han sido corregidas, y se puede actualizar vía CVS.