En resumen: CVE-2026-115560 es un aviso que php.net publicó el 23 de octubre de 2026. Según él, la ejecución remota de código solo es posible con una configuración de sesión poco habitual. Hasta la próxima versión ordinaria de corrección de errores, la solución es: fijar session.upload_progress.enabled=0 en el servidor y reiniciar todos los workers.
¿Qué es CVE-2026-115560?
Dos días después de los parches de las vulnerabilidades de PHP2Shell CVE-2026-109618 y CVE-2026-109619, el proyecto PHP publicó otro aviso. CVE-2026-115560 afecta al tratamiento de sesiones de PHP en relación con la función Session-Upload-Progress, que guarda en la sesión el progreso de las cargas de archivos en curso.
Según php.net, es posible la ejecución remota de código malicioso, pero solo con una configuración poco habitual. El aviso completo, con todos los detalles, debe seguir con la próxima versión ordinaria de corrección de errores. Hasta entonces, el conocimiento disponible es deliberadamente escaso.
¿Qué hace Session-Upload-Progress?
Session-Upload-Progress es una función de comodidad de PHP. Cuando un visitante sube un archivo grande, PHP escribe durante la carga, de forma continua, datos sobre el progreso en la sesión: cuántos datos han llegado ya y qué archivo se está transfiriendo. Una aplicación puede consultar esos datos en paralelo y construir con ellos una barra de progreso.
En la práctica, solo pocas aplicaciones lo usan, porque los formularios de carga modernos suelen medir el progreso directamente en el navegador. En PHP, sin embargo, la función está activada por defecto. Por eso aparece tanto en CVE-2026-115560 como en las medidas provisionales contra PHP2Shell: lo que no se necesita debería estar desactivado.
¿Cuándo está un servidor afectado por CVE-2026-115560?
Según el aviso de php.net, deben coincidir tres condiciones:
- En la configuración,
session.serialize_handlertiene el valorphp_binaryophp_serialize. - La aplicación cambia este valor en tiempo de ejecución a
phpmedianteini_set()antes de llamar asession_start(). - Session-Upload-Progress está activo.
El valor por defecto de session.serialize_handler es php. Cambiarlo en la configuración y volver a ponerlo en el código es poco habitual, pero ocurre en desarrollos propios que han ido creciendo o en bibliotecas con su propio tratamiento de sesiones. Si esto se aplica en su caso, puede comprobarse.
Cómo revisar su configuración
Primero, los valores efectivos. La CLI puede leer un php.ini distinto del de PHP-FPM o mod_php; por eso compruebe también la configuración del servidor web o del pool de FPM.
php -i | grep -E "session.serialize_handler|session.upload_progress.enabled"
grep -rn "serialize_handler\|upload_progress" /etc/php/ 2>/dev/null # la ruta varía según la distribución
Después, el código de la aplicación. La siguiente búsqueda es de solo lectura y muestra los lugares donde el handler se fija en tiempo de ejecución:
grep -rn "session.serialize_handler" /var/www/ --include="*.php"
Si la búsqueda no encuentra nada y el handler está en php en la configuración, la combinación descrita es poco probable. Aun así, debería desactivar Session-Upload-Progress, porque php.net menciona el mismo ajuste también como medida provisional contra PHP2Shell.
Solución: session.upload_progress.enabled=0
Fije el valor en php.ini, en el pool de FPM o en la configuración del servidor. Según php.net, expresamente no mediante ini_set() ni .user.ini, porque allí actúa demasiado tarde o la aplicación puede sobrescribirlo.
; php.ini (para todos los pools y SAPI que lean este archivo)
session.upload_progress.enabled = 0
; o en el pool de FPM
php_admin_flag[session.upload_progress.enabled] = off
# Apache con mod_php, en el VirtualHost o en la configuración del servidor
php_admin_flag session.upload_progress.enabled off
A continuación, reinicie todos los workers de PHP, por ejemplo systemctl restart php8.3-fpm o Apache en el caso de mod_php. Los nombres de paquetes y servicios varían según la distribución. Sin reinicio sigue en vigor el ajuste antiguo. Más información en Reiniciar PHP-FPM y todos los workers.
Después del reinicio, compruebe si el ajuste realmente se aplica: en el contexto web, no solo en la línea de comandos. Una página phpinfo configurada brevemente y protegida con control de acceso muestra el valor efectivo; elimínela inmediatamente después.
Valoración junto a PHP2Shell
CVE-2026-115560 es claramente más limitada que las dos vulnerabilidades de PHP2Shell, que actúan en los modos de ejecución habituales sin ninguna configuración especial. Quien deba priorizar ahora debería instalar primero la actualización de PHP2Shell y después fijar session.upload_progress.enabled=0. Ambas cosas son factibles en una misma ventana de mantenimiento.
Para la dirección y las personas no técnicas: CVE-2026-115560 no es motivo de inquietud, pero sí un punto de la lista. El ajuste se fija rápido, apenas afecta de forma perceptible a ninguna aplicación y cubre además una de las medidas provisionales contra PHP2Shell. Las demás medidas provisionales de php.net figuran en Medidas inmediatas si todavía no puede parchear; las indicaciones generales sobre la configuración de sesiones, en Proteger las sesiones en PHP.
Lo que todavía no sabemos: qué versiones de PHP están afectadas exactamente y qué versión traerá la corrección. Actualizaremos esta página en cuanto aparezca el aviso.
¿Cómo ayuda PHP SOS en concreto?
En el marco del refuerzo de servidores aplicamos la solución de forma duradera y comprobable:
- Leer la configuración: valores de sesión efectivos por SAPI, pool y host virtual.
- Buscar en el código: lugares donde el handler o las opciones de sesión se modifican en tiempo de ejecución.
- Desactivar en el lugar correcto: en php.ini, el pool o la configuración del servidor, sin posibilidad de que la aplicación lo sobrescriba, con el reinicio posterior.
- Seguimiento: cuando aparezca la versión de corrección de errores, la instalamos y documentamos el estado.
Preguntas frecuentes
¿Forma parte CVE-2026-115560 de PHP2Shell?
El aviso llegó dos días después de los parches de PHP2Shell y también afecta al propio PHP. Pero es una vulnerabilidad distinta, con su propio número CVE, y solo actúa con una configuración concreta y poco habitual. Según el estado actual, las actualizaciones de PHP2Shell del 21 de octubre no la corrigen.
¿Hay ya una actualización contra CVE-2026-115560?
Según el estado del 25/10/2026, no. php.net anuncia que el aviso completo seguirá con la próxima versión ordinaria de corrección de errores. Hasta entonces, la solución recomendada es session.upload_progress.enabled=0.
¿Qué deja de funcionar si desactivo Session-Upload-Progress?
La función comunica a la aplicación el progreso de las cargas de archivos en curso. Solo las aplicaciones que implementan una barra de progreso de este tipo mediante esta función de PHP pierden esa indicación. La carga en sí sigue funcionando.