CVE-2024-4577: Inyección de argumentos PHP en Windows
El pasado 6 de Junio, Orange Tsai reveló una nueva vulnerabilidad que afectaba a PHP, teniendo alcance sobre todas las versiones de PHP para Windows (PHP en modo CGI en particular en idiomas: chino y japonés), inclusive en instalaciones por defecto a los servidores XAMPP.
La raíz del problema radica en un mal procesamiento de caracteres por parte del motor CGI (parecido a la vulnerabilidad de hace 12 años CVE-2012-1823). Este motor interpreta (0xAD) y decodifica como un “guion suave”, el cual, PHP convertirá en un “guion real” gracias a la función de mapeo “best fit”, permitiendo así que un agente malicioso se aproveche para ejecutar código arbitrario
Versiones afectadas
Esta vulnerabilidad ha sido calificada según las métricas del CVSS 3.1 como 9.8 crítica según NIST, y las versiones afectadas son:
- PHP 8.3 < 8.3.8
- PHP 8.2 < 8.2.20
- PHP 8.1 < 8.1.29
Explotación
Para la explotación de esta vulnerabilidad son necesarias ciertas características en la máquina víctima:
- El software PHP debe estar configurado en modo CGI.
- Es posible la explotación si los binarios php.exe o php-cgi.exe están expuestos (todas las instalaciones por defecto en XAMPP para Windows).
- El sistema operativo debe ser Windows.
Debido a que esta vulnerabilidad es muy parecida a la ya mencionada CVE-2012-1823, se pueden utilizar técnicas de explotación de esta. Para ello, según estas técnicas, para traducir la inyección en RCE, se debe intentar inyectar los siguientes argumentos:
Esto permitirá la entrada del cuerpo de la solicitud HTTP y la procesará usando PHP. Se creó un ejemplo de petición añadiendo el “guion suave” en lugar del “guion real”, y en el cuerpo de la petición se añadió un código php que permitía ver la página phpinfo, demostrando que se consiguió el RCE.
Como se pueden ver en las capturas, se ha conseguido ejecutar código mediante la inyección de argumentos en la petición. Esto supone un problema grave porque un agente malicioso podría utilizar esta vulnerabilidad para controlar cualquier máquina afectada por este CVE, afectando a la confidencialidad, integridad y disponibilidad de esta.
Identificación y mitigación de la vulnerabilidad
Para identificar la vulnerabilidad en los sistemas, se puede realizar mediante la inspección de la versión de PHP.
Para mitigar la vulnerabilidad principalmente se debe actualizar el software PHP a las nuevas versiones parcheadas:
- 8.3.8
- 8.2.20
- 8.1.29
Es muy importante aplicar la actualización más reciente, ya que los agentes maliciosos están usando actualmente el rasomware TellYouThePass para explotarlo de forma activa.
Javier Muñoz, Analista de Ciberseguridad en Zerolynx
Powered by WPeMatico