Vulnerabilidades críticas en PHP

Tabla de contenidos

El pasado 20 de octubre se ha convertido en una nueva fecha importante que no se puede olvidar. El proyecto PHP ha anunciado una próxima actualización de seguridad que tiene como objetivo abordar dos vulnerabilidades críticas en PHP, correcciones que se llevaron a cabo el pasado 21 de octubre de 2026 a las 13:30 UTC.

Estas dos correcciones se presentaron en las versiones 8.5.12, 8.4.27, 8.3.36 y 8.2.35. Todas estas vulnerabilidades permiten que se ejecute el código de forma remota sin autenticación en servidores web vulnerables. Debido a que ya existen pruebas de concepto (PoC) públicas y detalles técnicos circulando en la comunidad, es posible que la explotación masiva por parte de ciberdelincuentes sea elevada.

Detalles de cada una de las vulnerabilidades

La vulnerabilidad CVE-2026-109618 (GHSA-w8hw-w9fx-j79w) cuenta con una calificación CVSS 9.2. PHP utiliza la función longjmp() para abortar peticiones cuando se supera el límite de memoria configurado (memory_limit).

El problema reside cuando esta interrupción se lleva a cabo mientras PHP procesa una estructura de datos incompleta, por ejemplo, mientras se está subiendo un formulario, el proceso de limpieza posterior intenta liberar punteros de memoria no inicializados. Con esta vulnerabilidad un atacante podría manipular la memoria a su antojo para forzar la ejecución del código.

La vulnerabilidad CVE-2026-109619, por su parte, permite que información o estados internos de una petición subsistan en la memoria después de haber ocurrido un error fatal. Esto puede ocurrir incluso después a que dicha memoria haya sido liberada. Cuando este mismo proceso atiende a una petición posterior, es posible acceder a la memoria obsoleta antes de que se reinicialicen las variables, permitiendo la ejecución remota de código.

¿Qué productos se han visto afectados?

  • Versiones de PHP 8.5 anteriores a la 8.5.12

  • Versiones de PHP 8.4 anteriores a la 8.4.27

  • Versiones de PHP 8.3 anteriores a la 8.3.36

  • Versiones de PHP 8.2 anteriores a la 8.2.35

  • Ramas de fin de vida (PHP 8.1 y anteriores), que ya no reciben actualizaciones del proyecto PHP

Recomendaciones a llevar a cabo

Lo primero y más importante es actualizar todas las instalaciones de PHP que se hayan visto afectadas lo antes posible a PHP 8.5.12, 8.4.27, 8.3.36 o 8.2.35.

Para los paquetes de distribución de Linux y los proveedores de soporte a largo plazo que recibieron los parches con antelación contacte con su proveedor para obtener dichos paquetes actualizados.

En el caso de las versiones obsoletas, las de PHP 8.1 y anteriores, algunas distribuciones y proveedores de soporte a largo plazo ofrecen correcciones retroportadas. En este caso le recomendamos que contacte con su proveedor o actualice a una versión compatible.

Se trata de un problema grave, por lo que el equipo de seguridad de PHP ha publicado correcciones retroportadas mínimas para PHP 7.4, 8.0 y 8.1 para aquellas organizaciones que compilan desde el código fuente o para aquellas que no cuentan con un proveedor LTS.

Para los usuarios de rpms.remirepo.net no tendrán actualizaciones el día de lanzamiento. Lo más recomendado en este caso es que los usuarios opten por los paquetes de distribución o que compilen directamente desde el código fuente.

Siempre que no sea posible aplicar el parche de inmediato se recomienda a las organizaciones que consideren la posibilidad de aislar los recursos conectados a internet de las redes públicas hasta que pueda verificarse una solución.

Mitigaciones temporales (Si no se puede actualizar inmediatamente)

En el caso de que no se pueda actualizar de forma inmediata, mediante estas mitigaciones se reduce la superficie de exposición ante vectores conocidos. Estas mitigaciones no reemplazan en ningún momento la instalación del parche oficial.

Para mitigar CVE-2026-109618 (Corrupción por OOM)

Desactive primero memory_limit en la configuración del servidor

Establezca memory_limit=-1 mediante php_admin_value en los pools de FPM o en la configuración de Apache para evitar que la aplicación sea la que controle el fallo. Asegúrese de que ninguna aplicación o directorio sobrescriba este parámetro.

Restrinja los tamaños de subida

Para hacer esto, configure post_max_size a 8MB o a 32MB si se requieren descargas, y mantenga upload_max_filesize por debajo de este valor.

Límites a nivel de proxy/WAF

Ponga límites en el servidor web o WAF para el recuento de campos, cabeceras, partes multipart y profundidad de peticiones HTTP.

Para mitigar CVE-2026-109619 (Estado global persistente)

Desactive el progreso de subida de sesiones

Para hacer esto establezca session.upload_progress.enabled=0 en php.ini o a nivel de servidor (nunca mediante ini_set() ni .user.ini) y reinicie todos los workers.

Desactive trazas en PHP 8.5

En PHP debe configurar fatal_error_backtraces=0 y acto seguido reiniciar todos los procesos.

Elimine configuraciones en desuso

Para terminar, corrija o elimine parámetros obsoletos por petición que generen advertencias o diagnósticos antes de la inicialización de sesión.

Compartir:
Mas Articulos
Envíanos un mensaje

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *