El equipo de PHP ha lanzado nuevas compilaciones de sus paquetes oficiales para Windows, abarcando las ramas 8.2 a 8.5, con el objetivo de subsanar la vulnerabilidad CVE-2026-111497. Este fallo reside en la biblioteca de compresión Brotli incorporada en dichos paquetes y podría permitir a un atacante corromper la memoria y, en última instancia, ejecutar código arbitrario.
De acuerdo con PHP, la vulnerabilidad es accesible a través de la extensión cURL cuando esta descomprime automáticamente las respuestas HTTP. cURL desactiva esta opción por defecto, pero las aplicaciones y bibliotecas cliente de HTTP pueden habilitarla.
Nuevas compilaciones y versiones
Los paquetes reconstruidos, identificados como 8.5.12-1, 8.4.27-1, 8.3.36-1 y 8.2.35-1, llegan cinco días después de las versiones del 21 de octubre que corrigieron las dos fallas de ejecución remota de código PHP2Shell. Estas nuevas compilaciones utilizan el mismo código fuente de PHP, por lo que aquellas correcciones se mantienen, y ahora incluyen Brotli 1.2.1, la versión que soluciona el problema.
PHP publica una lista de materiales de software (SBOM) con cada paquete. En las compilaciones x64 Non Thread Safe de la semana pasada para las cuatro versiones, esas listas mostraban Brotli 1.2.0, una de las versiones afectadas.
- PHP aconseja a los usuarios de Windows instalar las nuevas compilaciones desde su página de descargas.
- Dado que la versión de PHP no cambia, php -v muestra el mismo número antes y después.
- El sufijo -1 en el nombre del archivo, como en php-8.5.12-1-nts-Win32-vs17-x64.zip, y el hash SHA-256 listado en la página de descargas identifican la nueva compilación.
Mecanismo de explotación
La descompresión automática hace que cURL solicite al servidor una respuesta comprimida y la descomprima. En código PHP, la opción CURLOPT_ENCODING la activa, y un valor vacío acepta todos los formatos que cURL soporta.
Guzzle, una biblioteca cliente HTTP para PHP, establece ese valor vacío por defecto en las solicitudes que envía a través de cURL, según el código de su versión 7.16.1 y de la 8.3.1. Con base en ese código y en la descripción de PHP, una aplicación que mantenga la configuración predeterminada de Guzzle cumple la condición para alcanzar la vulnerabilidad en las compilaciones de Windows de la semana pasada. The Hacker News no ha probado esto en un sistema Windows.
Un ataque llegaría como una respuesta comprimida manipulada desde un servidor al que la aplicación PHP se conecte.
Gravedad y estado de explotación
Google califica la falla con 9.2 sobre 10, o Crítica, en la escala CVSS 4.0. Red Hat la evalúa en 8.1, o Importante, en la escala CVSS 3.1.
Investigadores de Imperva ejecutaron código a través de la vulnerabilidad en una compilación oficial de Node.js, y les llevó varios intentos. El aviso de PHP no menciona ataques. La evaluación de CISA del 23 de octubre no registró explotación, y la falla no estaba en su catálogo de vulnerabilidades explotadas conocidas en la actualización de ese día.
Investigadores de OpenAI descubrieron la vulnerabilidad. Google la corrigió en Brotli 1.2.1, 1.1.1 y 1.0.10 cuando se reveló por primera vez el 21 de octubre. Node.js, Bun y otros programas que incluyen su propia copia de Brotli también han publicado correcciones.
Recomendaciones
El aviso de PHP no ofrece solución alternativa para los sistemas que aún no pueden actualizarse. OpenAI recomienda desactivar la descompresión automática de Brotli en los clientes HTTP hasta que se instale la actualización, y advierte que eliminar br, el nombre de Brotli en el encabezado Accept-Encoding, "por sí solo no impide que un servidor lo envíe".
En código PHP, seguir esa recomendación implica no establecer CURLOPT_ENCODING, ya que cURL no descomprime respuestas sin ella. En Guzzle, significa establecer la opción de solicitud decode_content en false, lo que detiene toda decodificación automática, por lo que las respuestas gzip también llegan comprimidas.


















Deja una respuesta