Una vulnerabilidad crítica en la función PHP Extract () permite a un atacante causar corrupción de memoria que podría conducir a una ejecución arbitraria del código nativo en múltiples versiones de PHP.
La vulnerabilidad proviene de los problemas de gestión de la memoria que se desencadenan por patrones de uso específicos que involucran referencias y destructores de objetos que afectan todas las versiones de PHP principales, incluidas 5.x, 7.x y 8.x.
Vulnerabilidad de la función de extracción de PHP crítica ()
La vulnerabilidad existe dentro de la función PHP Extract (), especialmente cuando se usa con el indicador extr_refs.
Esta función importa variables de la matriz a la tabla de símbolos actuales. Esto se puede operar para crear condiciones de memoria peligrosas.
Cuando extracto () es una variable que es un objeto con un método __destruct () definido, un atacante puede desencadenar una condición racial.
El método __destruct () puede establecer la variable donde extracto () está funcionando actualmente y conducir a:
Condiciones dobles para la versión PHP 5.x. Vulnerabilidades después de usar versiones PHP 7.x y 8.x.
Los investigadores de seguridad han demostrado que esta corrupción de memoria se puede utilizar para garantizar que puedan obtener la ejecución de código arbitraria superponiendo las cuerdas y las matrices ZVAL, proporcionando efectivamente a los atacantes acceso de lectura/escritura a la memoria de PHP.
Los ataques siguen un patrón refinado:
Activar después de doble libre/usando el objeto creado. Manipule la asignación de memoria PHP para crear estructuras de memoria duplicadas. La memoria interna importante de PHP aborda filtraciones como Ejecutor_Globals. Encuentre funciones no válidas como System () en la memoria. Restaura la funcionalidad de la función deshabilitada sobrescribiendo la estructura interna.
La aleatorización del diseño del espacio de dirección (ASLR) no puede evitar este ataque. Esto se debe a que los exploits pueden filtrar las direcciones de memoria en tiempo de ejecución manipulando las estructuras de datos duplicados.
Este defecto ha sido identificado por el investigador de seguridad independiente LCFR en cooperación con la divulgación segura de SSD.
Código de prueba de concepto
Prueba de concepto mínima que desencadena vulnerabilidades:
Al depurar con ASAN (DirectSanitizer), este código genera errores después de usar Heap en PHP 8.x y verifica las vulnerabilidades.
El equipo de desarrollo de PHP aborda este problema a través del asesor de seguridad GitHub GHSA-4PWQ-3FV3-GM94.
Los administradores de aplicaciones web y los desarrolladores de PHP deben:
Actualice inmediatamente a la última versión PHP parcheada. No use extracto () usando datos controlados por el usuario. Si necesita usar extracto (), evite el indicador extr_refs. Considere implementar controles de seguridad de nivel de aplicación adicionales.
Esta vulnerabilidad destaca los riesgos asociados con la funcionalidad dinámica de PHP y la gestión de la memoria.
Se insta a los desarrolladores a auditar su uso de extracto (), aplicar parches de seguridad rápidamente y aplicar parches de seguridad rápidamente para evitar la explotación de tales fallas críticas.
Informe de tendencia de malware 15,000 incidentes del equipo SOC, trimestre de 2025! -> Obtenga una copia gratis