Se ha descubierto una nueva vulnerabilidad de ejecución remota de código (RCE) en el entorno PHP/PHP-CGI para sistemas operativos Windows. Esta falla afecta a todas las versiones desde la 5.x y podría impactar a un gran número de servidores debido a que ya existen indicadores de compromiso (IOC) y exploits disponibles.
Descubrimiento y parche
La vulnerabilidad, identificada como CVE-2024-4577, fue descubierta por el investigador principal de seguridad de Devcore, Orange Tsai (aka @orange_8361), el 7 de mayo de 2024. El investigador informó a los desarrolladores del proyecto PHP sobre la brecha. Los mantenedores del proyecto lanzaron un parche que soluciona la vulnerabilidad.
Versiones afectadas
Según el aviso de Devcore, esta vulnerabilidad afecta a todas las versiones de PHP instaladas en sistemas operativos Windows:
- PHP 8.3 < 8.3.8
- PHP 8.2 < 8.2.20
- PHP 8.1 < 8.1.29
Además, afecta a todas las versiones de PHP para Windows, incluyendo las que ya están en fase de fin de vida (EoL), como PHP 8.0, PHP 7.x y PHP 5.x.
Causa de la vulnerabilidad
La falla CVE-2024-4577 se debe a un descuido en el manejo de las conversiones de codificación de caracteres. Específicamente, la función «Best-Fit» en Windows cuando PHP se usa en modo CGI.
El equipo de PHP no notó esta función durante la implementación del sistema operativo Windows. Esta supervisión permite a atacantes no autenticados eludir las protecciones previas de CVE-2012-1823 mediante secuencias de caracteres específicas, lo que facilita la ejecución de código arbitrario en servidores PHP remotos mediante inyección de argumentos.
Impacto y amenazas
La vulnerabilidad elude las protecciones implementadas previamente para CVE-2012-1823, que fue explotada en ataques de malware varios años después de su corrección. Los analistas explican que incluso si PHP no está configurado en modo CGI, la vulnerabilidad aún podría ser explotable siempre que los ejecutables de PHP estén disponibles para el servidor web.
La aplicación de actualizaciones de seguridad en proyectos con implementación a gran escala es complicada y puede dejar una cantidad significativa de sistemas vulnerables durante períodos prolongados. La Shadowserver Foundation ya ha detectado múltiples direcciones IP escaneando en busca de servidores afectados.
Remediación
Aquellos que utilicen versiones compatibles deben actualizar a las versiones que incorporan los parches: PHP 8.3.8, PHP 8.2.20 y PHP 8.1.29.
Para sistemas que no se pueden actualizar inmediatamente, se recomienda aplicar una regla mod_rewrite para bloquear ataques:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^%ad [NC]
RewriteRule .? – [F,L]
Si se usa XAMPP y no se necesita la función PHP CGI, se debe buscar la directiva «ScriptAlias» en el archivo de configuración de Apache y comentarla.
Los administradores pueden determinar si usan PHP-CGI usando la función phpinfo() y verificando el valor «Server API » en la salida.
DEVCORE sugiere que los administradores de sistemas consideren migrar de CGI a alternativas más seguras, como FastCGI, PHP-FPM y Mod-PHP.