Un nuevo bug en PHP7
permite tomar el control del servidor vulnerable ejecutando 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».
Esta vulnerabilidad
(CVE-2019-11043) es una ejecución de código remoto en PHP7, la nueva rama en
producción de PHP, uno de los lenguajes de programación más extendidos para
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 que los
investigadores que encontraron la vulnerabilidad han hecho público.
PHP-FPM es una
alternativa a PHP FastCGI que gestiona mejor sitios web con mucho tráfico,
además de ofrecer 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 forma remota.
Andrew Danau
descubrió la vulnerabilidad en una competición CTF (Capture The Flag), cuyo
objetivo es resolver una serie de retos informáticos. El fallo se encontró a
partir de un comportamiento extraño en la parte del servidor al introducir un
salto de línea codificado en la URL ‘%0A’. A partir de ese comportamiento
Andrew, junto a otros dos investigadores, Emil Lerner y Omar Ganiev,
descubrieron el fallo y crearon el exploit, cuya ejecución se realiza en una
simple línea de comando.
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 tutoriales de PHP-FPM. El proveedor de hosting Nextclowd ya ha avisado
a sus clientes para que revisen sus servidores, ya que en un manual de
instalación anteriormente publicado se utilizaba la configuración vulnerable.
Ayer se lanzó un
parche para esta vulnerabilidad, casi un mes después de ser informado al equipo
de desarrolladores de PHP, y dado que el exploit ya está disponible es probable
que 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 incluso si no están utilizando la
configuración vulnerable.
Más información
Fuente: Hispasec