Producto(s) afectado(s):
- La vulnerabilidad CVE-2024-4577 afecta a todas las versiones de PHP instaladas en sistemas Windows:
- PHP 8.3 < 8.3.8
- PHP 8.2 < 8.2.20
- PHP 8.1 < 8.1.29
Las ramas PHP 8.0, 7 y 5 se encuentran en Fin de Vida (EOL ) y ya no reciben mantenimiento.
Descripción:
El 6 de junio de 2024, el equipo de seguridad de DEVCORE alertó sobre una vulnerabilidad de seguridad crítica en el lenguaje de programación PHP, concretamente en instalaciones en Windows. Esta vulnerabilidad se designa como CVE-2024-4577, con una puntuación de gravedad de 9,8 (Crítica).
En las versiones listadas de PHP, al utilizar Apache y PHP-CGI en Windows, si el sistema está configurado para utilizar determinadas páginas de código, Windows puede utilizar el comportamiento «Best-Fit» para sustituir caracteres en la línea de comandos proporcionada a funciones de la API Win32. El módulo PHP CGI puede malinterpretar estos caracteres como opciones PHP, permitiendo potencialmente a un actor malicioso pasar opciones al binario PHP en ejecución, revelando así el código fuente de los scripts o ejecutando código PHP arbitrario en el servidor (RCE), entre otros riesgos.
Hay dos escenarios de configuración vulnerables:
- Ejecutar PHP en modo CGI
Al configurar la Directiva de Acción para asignar las peticiones HTTP correspondientes a un binario PHP-CGI ejecutable en el servidor HTTP Apache, se puede explotar directamente esta vulnerabilidad. Las configuraciones afectadas más comunes son Configuración A
AddHandler cgi-script .php
Action cgi-script "/cgi-bin/php-cgi.exe"
Configuración B
<FilesMatch "\.php$">
SetHandler application/x-httpd-php-cgi
</FilesMatch>
Action application/x-httpd-php-cgi "/php-cgi/php-cgi.exe"
- Exposición del binario PHP – Configuración por defecto en XAMPP
Si PHP no está configurado en modo CGI, esta vulnerabilidad también se ve afectada por la simple exposición del binario PHP ejecutable en el directorio CGI. Algunos escenarios comunes son:
- Copia php.exe o php-cgi.exe al directorio /cgi-bin/.
- Exponiendo el directorio PHP mediante la directiva ScriptAlias, como por ejemplo:
ScriptAlias /php-cgi/ "C:/xampp/php/"
Es importante señalar que el segundo escenario es la configuración por defecto de XAMPP para Windows, lo que significa que todas las versiones de instalaciones de XAMPP en Windows son vulnerables por defecto en el momento de la publicación de este boletín. El propio equipo de XAMPP desaconseja utilizar la versión gratuita en servidores de producción.
Recientemente, se han hecho públicos varios exploits y PoCs para esta vulnerabilidad, lo que aumenta significativamente la probabilidad de explotación. También hay informes de grupos de ransomware que explotan esta vulnerabilidad en sus campañas (como «TellYouThePass»).
En Shodan, se puede observar que existen aproximadamente 1456 dispositivos vulnerables sólo en México.
Impacto:
Un actor malintencionado que pudiera estar ya dentro de la red podría aprovechar esta vulnerabilidad para borrar parcial o totalmente las copias de seguridad, impidiendo así la recuperación a partir de una copia de seguridad.
Mitigación:
Para los sistemas que no se puedan actualizar, se pueden utilizar las siguientes instrucciones para mitigar temporalmente la vulnerabilidad:
Para los usuarios que no puedan actualizar PHP, se pueden utilizar las siguientes reglas de reescritura para bloquear los ataques. Ten en cuenta que estas reglas son sólo una mitigación temporal para las configuraciones regionales de chino tradicional, chino simplificado y japonés:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^%ad [NC]
RewriteRule .? - [F,L]
Para los usuarios que utilicen XAMPP para Windows, cuyo equipo de desarrollo aún no ha publicado los archivos de actualización correspondientes para esta vulnerabilidad en el momento de redactar este boletín, si confirmas que no necesitas la función PHP CGI, puedes evitar la exposición a la vulnerabilidad modificando la siguiente configuración en el servidor HTTP Apache:
C:/xampp/apache/conf/extra/httpd-xampp.conf
Dentro del archivo, comenta la línea correspondiente a:
ScriptAlias /php-cgi/ "C:/xampp/php/"
Sin embargo, dado que PHP CGI es una arquitectura obsoleta, se recomienda considerar la migración a una arquitectura más segura, como Mod-PHP, FastCGI o PHP-FPM.
Solución:
Se recomienda a todos los usuarios que actualicen a las últimas versiones de PHP 8.3.8, 8.2.20 y 8.1.29. El enlace oficial de descarga es: