Comparte en:

Si estás ejecutando un sitio web basado en PHP en el servidor NGINX y tienes habilitada la función PHP-FPM para un mejor rendimiento, ten cuidado con una vulnerabilidad recientemente revelada.

Dicha vulnerabilidad podría permitir que atacantes no autorizados hackeen tu servidor de forma remota.

La vulnerabilidad, identificada como CVE-2019-11043, afecta a sitios web con ciertas configuraciones de PHP-FPM que, según los informes, no son raras en el entorno.

Esta podría explotarse fácilmente como una vulnerabilidad de prueba de concepto (PoC), para la vulnerabilidad revelada públicamente.

PHP-FPM es una implementación alternativa de PHP FastCGI, esta ofrece un procesamiento avanzado y altamente eficiente para scripts escritos en lenguaje de programación PHP.

La vulnerabilidad principal es un problema de corrupción de memoria de flujo inferior “env_path_info” en el módulo PHP-FPM, y usarla junto con otras fallas podría permitir a los atacantes ejecutar de forma remota código arbitrario, en servidores web vulnerables.

La vulnerabilidad fue descubierta por Andrew Danau, un investigador de seguridad en Wallarm, esto sucedió mientras trabajaban en una competencia de caza de recompensas.

¿Qué sitios web basados ​​en PHP son vulnerables a los ciberdelincuentes?

Aunque el exploit de prueba de concepto lanzado públicamente está diseñado para apuntar específicamente a servidores vulnerables que ejecutan versiones de PHP 7+, el error de desbordamiento PHP-FPM también afecta a versiones anteriores de PHP y podría ser ejecutado de una manera diferente.

En resumen, un sitio web es vulnerable si:

  • NGINX está configurado para reenviar solicitudes de páginas PHP al procesador PHP-FPM,
  • La directiva fastcgi_split_path_info está presente en la configuración e incluye una expresión regular que comienza con un símbolo ‘^’ y termina con un símbolo ‘$’,
  • La variable PATH_INFO se define con la directiva fastcgi_param,
  • No hay comprobaciones como try_files $ uri = 404 o if (-f $ uri) para determinar si un archivo existe o no.

Esta configuración vulnerable de NGINX y PHP-FPM se parece al siguiente ejemplo:

Aquí, la directiva fastcgi_split_path_info se usa para dividir la URL de las páginas web PHP en dos partes, el valor de un motor PHP-FPM de ayuda para aprender el nombre del script y el otro contiene la información de ruta.

¿Cómo funciona el exploit de prueba de concepto de ejecución remota de código para PHP FPM?

Según los investigadores, la expresión regular de muestra, que define la directiva fastcgi_split_path_info, como se muestra, puede manipularse utilizando el carácter de nueva línea, de manera que la función de división eventualmente deje vacía la información de la ruta.

A continuación, dado que hay un puntero aritmético en el código FPM que supone incorrectamente que env_path_info tiene un prefijo igual a la ruta del script php sin verificar realmente la existencia del archivo en el servidor.

El atacante puede explotar el problema para sobrescribir los datos en la memoria, solicitando la URL especialmente diseñada para los sitios web específicos.

En segundo plano, los investigadores creadores del exploit PoC [ 1  (PHuiP-FPizdaM), 2 ] lanzaron cadenas juntas para resolver estos problemas y manipular la memoria y agregar valores php.ini personalizados, como se muestra en la captura de pantalla.

Esto se realiza el archivo de configuración PHP-FPM de un servidor objetivo, que permite a los atacantes ejecutar código arbitrario utilizando un shell web.

 

“Utilizando una longitud cuidadosamente seleccionada de la ruta URL y la cadena de consulta, un atacante puede hacer que path_info apunte con precisión al primer byte de la estructura _fcgi_data_seg.

Al poner cero en él, se mueve el campo `char* pos` hacia atrás, y luego FCGI_PUTENV sobrescribe algunos datos (incluyendo otras variables cgi rápidas) con la ruta del script “, dijeron los investigadores en un informe del error enviado al proyecto PHP.

“Utilizando esta técnica, pude crear una variable falsa PHP_VALUE fcgi y luego usar una cadena de valores de configuración cuidadosamente seleccionados para obtener la ejecución del código”.

Actualizaciones de PHP 7 lanzadas para corregir la falla de FPM

La lista de condiciones previas para una explotación exitosa, como mencioné anteriormente, no son raras porque algunos de los proveedores de alojamiento web están utilizando las configuraciones vulnerables.

Estas se encuentran disponibles en Internet como parte de muchos tutoriales PHP FPM.

Nextcloud, uno de los proveedores de alojamiento web afectados, lanzó ayer un aviso advirtiendo a sus usuarios que “la configuración predeterminada de Nextcloud NGINX también es vulnerable a este ataque” y recomendó a los administradores de sistemas que tomen medidas inmediatas.

Ayer se lanzó un parche para esta vulnerabilidad, casi un mes después de que los investigadores lo informaron al equipo de desarrolladores de PHP.

Dado que el exploit PoC ya está disponible y el parche lanzado ayer, es probable que los ciberdelincuentes ya hayan comenzado a escanear Internet, en búsqueda de sitios web vulnerables.

Por lo tanto, recomendamos encarecidamente a los usuarios que actualicen PHP a las últimas versiones de PHP 7.3.11 y PHP 7.2.24.

Hazlo, incluso si no estás usando la configuración vulnerable.




0 Comments

Deja un comentario