CVE-2024-4577 es una vulnerabilidad crítica de PHP (CVSS 9.8) que permite ejecución remota de código sin autenticación. Fue reportada en junio de 2024, entró casi de inmediato al catálogo de vulnerabilidades explotadas activamente de CISA, y dos años después sigue apareciendo en escaneos automatizados contra servidores que nunca se actualizaron.
Cómo funciona
La falla es en realidad un bypass de otra vulnerabilidad más antigua (CVE-2012-1823). Cuando PHP corre en modo CGI sobre Windows, el sistema operativo hace una conversión de caracteres llamada Best-Fit para ciertas configuraciones regionales (chino tradicional, chino simplificado, japonés, entre otras). Esa conversión puede transformar un carácter inofensivo en un guion, y ese guion permite inyectar parámetros de línea de comandos de PHP directamente a través de la URL — sin necesidad de ninguna credencial.
El resultado: un atacante puede llegar a ejecutar código arbitrario en el servidor con una sola petición HTTP.
A quién afecta
Es importante ser precisos acá, porque hay mucha confusión:
- Si tu sitio usa WordPress, Joomla, Drupal o cualquier otro CMS, ya tienes PHP corriendo por debajo — aunque nunca lo hayas instalado tú mismo ni sepas qué es. Todo ese software depende de PHP para funcionar, así que las comprobaciones de este artículo te aplican igual, incluso si tu única interacción con tu sitio es a través del panel de administración.
- Es una vulnerabilidad específica de Windows. La conversión Best-Fit que la hace posible es un comportamiento del propio Windows, no existe el mismo mecanismo en Linux.
- Solo aplica cuando PHP corre en modo CGI —o cuando el binario
php-cgiqueda accesible directamente a través del servidor web. Las configuraciones más comunes en hosting moderno (PHP-FPM, LiteSpeed/LSAPI, mod_php) no usan ese mecanismo y no están expuestas a este vector específico. - Las instalaciones de XAMPP para Windows son especialmente vulnerables, porque el modo CGI viene activado por defecto.
Versiones corregidas
PHP 8.1.29, 8.2.20, 8.3.8 y todas las versiones posteriores a esas ya incluyen la corrección. PHP 8.0 y anteriores no recibieron parche: están fuera de soporte, así que si todavía corre alguna de esas versiones, la vulnerabilidad es la menor de tus preocupaciones.
Cómo revisar si tu servidor está expuesto
- Confirma tu versión de PHP (
php -vpor línea de comandos, o revisa la información de tu panel de hosting). Si es anterior a las versiones corregidas arriba, actualiza — es el paso que más riesgo elimina de una sola vez. - Identifica qué maneja las peticiones PHP en tu servidor: ¿PHP-FPM, LSAPI, mod_php, o CGI? Tu proveedor de hosting o tu panel de control normalmente lo indica. Si no estás en modo CGI, este CVE específico no te afecta, aunque mantener PHP actualizado sigue siendo buena práctica por otras razones.
- Si estás en Windows con XAMPP u otro CGI manual, intenta acceder directamente a rutas como
/cgi-bin/php-cgi.exeo/php-cgi/php-cgi.exedesde un navegador. Si el binario responde en vez de dar error 404, está expuesto — y debería dejar de estarlo, independientemente de la versión de PHP que tengas.
Qué hacer
- Actualiza PHP a una versión corregida si todavía no lo hiciste.
- Evita exponer el binario
php-cgidirectamente a través del servidor web; bloquéalo explícitamente si tu configuración lo permite. - Si tienes alternativa, migra de modo CGI a PHP-FPM o LSAPI — además de cerrar este vector específico, suele ser más rápido.
- Como capa adicional, independientemente de si este CVE en particular te afecta: revisa si tu servidor tiene deshabilitadas funciones PHP como
exec,shell_exec,system,passthru,proc_openypopen. No son necesarias para el funcionamiento normal de la mayoría de aplicaciones web, y son exactamente lo que un atacante buscaría para convertir cualquier otra falla en control total del servidor.
Ninguna de estas medidas es compleja ni costosa. La mayoría toma minutos — la parte difícil es, como casi siempre, acordarse de revisarlo.
