viernes, 4 de mayo de 2012

Grave vulnerabilidad en PHP-CGI

Se ha publicado una vulnerabilidad crítica en el código del lenguaje PHP que permite la ejecución remota de código en servidores web con PHP que se ejecuten como interfaz de entrada común o CGI.
Esta vulnerabilidad está clasificada como crítica ya que a través de la inyección de estos parámetros, se puede mostrar el contenido del código fuente (lo que podría revelar información de contraseñas) o ejecutar código PHP.
Se recomienda actualizar la versión de PHP o utilizar el módulo de Apache 'mod_rewrite' para bloquear las peticiones maliciosas.
Sistemas afectados:
Servidores web con PHP ejecutándose como CGI.
Descripción:
Eindbazen, un equipo de competiciones CTF, ha descubierto una vulnerabilidad en PHP-CGI que permite pasar parámetros al intérprete de PHP, como -s o -r, a través de la URL. Por ejemplo añadiendo la cadena '?-s'.
Como resultado de la inyección de estos parámetros en la URL, se puede mostrar el contenido de archivos de código fuente (que puede incluir información confidencial como, por ejemplo, contraseñas de BBDD) o ejecutar código PHP arbitrario.
Aunque el parámetro '-r', para ejecutar código PHP, es filtrado en php5-cgi, dependiendo de las variables de entorno, esta medida de seguridad puede evitarse.
PHP eliminó por error el código que protegía ante este problema en 2004.
FastCGI no es vulnerable.

Impacto:

  • Ejecución de código malicioso.
  • Revelación de información confidencial.
Solución:
Ya existen módulos de la herramienta de pentesting y hacking metasploit que permiten explotar esta vulnerabilidad por lo que se recomienda actualizar cuanto antes. Se puede hacer a través del código fuente, aunque se recomienda instalarlo a través de los mecanismos de actualización de paquetes de Linux. Para sistemas Windows, se puede descargar de la web http://windows.php.net/download/.
Como alternativa, si no se puede actualizar, el fabricante propone las siguientes reglas del módulo mod_rewrite de Apache para bloquear las URLs maliciosas:
RewriteCond %{QUERY_STRING} ^(%2d|-)[^=]+$ [NC]
RewriteRule ^(.*) $1? [L]
Fuente: Inteco-CERT


Visto en  Boletín Alerta CSIRT-cv

No hay comentarios: