Bug en PHP7 con NGINX y PHP-FPM

Bug en PHP7 con NGINX y PHP-FPM.

Descubierto un nuevo bug en PHP7 que permite tomar el control de un servidor mediante código remoto. El exploit publicado convierte esta hazaña en algo trivial, por lo que es muy posible que esté siendo aprovechada por atacantes «in the wild».

La vulnerabilidad (CVE-2019-11043) es una ejecución de código remoto en PHP7, la nueva versión estable de PHP, y uno de los lenguajes de programación más extendidos en sitios web.

La vulnerabilidad afecta a sitios que funcionan con el servidor web NGINX y PHP-FPM, centrándose en una configuración en concreto, la cual es muy común encontrar en webs en producción. Se trata de algo muy sencillo de explotar con este exploit, los investigadores que localizaron la vulnerabilidad lo han publicado.

PHP-FPM es una alternativa a PHP FastCGI, capaz de gestionar mucho mejor sitios web de alto trafico, además ofrece un manejo avanzado de los procesos.

La vulnerabilidad principal es un error de underflow memory corruption en «env_paht_info» en el módulo PHP-FMP, que combinándose con otros errores permiten ejecutar código en servidores vulnerables de manera remota.

Andrew Danau descubrió la vulnerabilidad en una competición CTF (Capture The Flag), cuyo objetivo era resolver una serie de retos informáticos. El fallo se encontró a partir de un comportamiento extraño por parte del servidor al introducir un salto de línea codificado en la URL ‘%0A’. Al ver la extraña forma de proceder, Andrew, junto a otros dos investigadores, Emil Lerner y Omar Ganiev, descubrieron el fallo y crearon el exploit, cuya ejecución se realiza con una simple línea de comando.

 

Bug en PHP7 con NGINX y PHP-FPM

Un sitio web es vulnerable a la explotación si cumple las siguientes características:

  • Utiliza NGINX y está configurado para reenviar las peticiones al procesador PHP-FPM.
  • Está configurado ‘fast_split_path_info‘ con una expresión regular que comience con ‘^’ y termine con ‘$’ (no contempla un salto de línea).
  • La variable PATH_INFO esta definida con fastcgi_param.
  • No hay comprobaciones como try_files $ uri = 404 o if (-f $ uri) que determinen si un archivo existe o no.

La configuración que se describe puede parecerse a la siguiente:

Se trata de una situación frecuente. Incluso algunos hosting utilizan esta configuración como parte de sus tutoriales sobre PHP-FPM. Muchos proveedores de hosting están avisando a sus clientes para que revisen sus servidores, y tomen las medidas necesarias.

Aquí tienes la solución.

Ya existe un parche para esta vulnerabilidad, pero han tardado casi un mes después de ser informados (al equipo de desarrolladores de PHP), y dado que el exploit ya está disponible, es probable que muchos atacantes estén escaneando Internet para encontrar sitios web vulnerables.

Este fallo ha sido catalogado como CVE-2019-11043, y se recomienda encarecidamente que los usuarios actualicen PHP a PHP 7.3.11 y PHP 7.2.24.

Visto en unaaldia.hispasec.com

 

Espero que este articulo te sea de utilidad, puedes ayudarnos a mantener el servidor con una donación (paypal), o también colaborar con el simple gesto de compartir nuestros artículos en tu sitio web, blog, foro o redes sociales. Tor vs VPN.

 

Agregar comentario