Fecha de publicación: Mié, 21/10/2026 - 08:58

Alerta de seguridad

Nivel de peligrosidad: Alto

Descripción

Se ha publicado un exploit de prueba de concepto (PoC) y un repositorio público con herramientas de verificación y un entorno de laboratorio para dos vulnerabilidades críticas en PHP, conocidas como "php2shell" e identificadas como CVE-2026-109618 y CVE-2026-109619, cada una con una calificación de 9.2 según CVSS v4.0. Estas fallas afectan a la función session.upload_progress de PHP y podrían permitir la ejecución remota de código bajo ciertas condiciones.

Los detalles técnicos descritos por los investigadores involucran múltiples vías:

  • Una combinación entre el almacenamiento de un nombre de archivo no validado en los datos de sesión por parte del manejador de progreso de carga y una falla de inclusión de archivo local (LFI) en la aplicación, donde un identificador de sesión enviado en un cuerpo POST puede omitir la configuración session.use_only_cookies.
  • Un error de memoria de tipo "uso después de liberación" (Use-After-Free) que puede ocurrir al reingresar a un destructor var_destroy, un estado serializador PHP-FPM persistente en todas las solicitudes y un desajuste de controlador que ejecuta un destructor tras fallar la deserialización.

El equipo de seguridad de PHP programó la liberación de una actualización de emergencia para solucionar estas vulnerabilidades.

Recursos afectados

Versiones de PHP enumeradas en el repositorio de investigación como afectadas: desde la versión 5.4.0 hasta la 8.5.11.
Ramas con soporte actual elegibles para actualizaciones oficiales de seguridad:

  • PHP 8.2 (solo correcciones de seguridad), PHP 8.3 (solo correcciones de seguridad), PHP 8.4 (soporte activo) y PHP 8.5 (soporte activo).
  • Versiones obsoletas (al final de su vida útil y sin recibir correcciones oficiales del proyecto PHP): PHP 8.1 y anteriores, incluidos PHP 8.0, 7.x y 5.x. (Datos de Shodan del 20 de octubre identificaron 883,717 hosts orientados a Internet que ejecutan PHP 8.1 o anterior).

Solución/Mitigación

Prepararse para aplicar las actualizaciones oficiales de seguridad tan pronto como el proyecto PHP publique las versiones fijas confirmadas (el repositorio de investigación enumera provisionalmente como versiones fijas planificadas a PHP 8.2.35, 8.3.36, 8.4.27 y 8.5.12, las cuales deben verificarse contra el aviso de lanzamiento oficial).

Aplicar la actualización adecuada rápidamente y reiniciar PHP-FPM o el servicio web relevante para que los nuevos binarios entren en vigencia.
Como mitigación temporal (salvaguardas que no abordan todas las cadenas de ataque y no sustituyen a una actualización de seguridad), se pueden aplicar las siguientes medidas:
Desactivar session.upload_progress.
Configurar session.use_only_cookies en "On".

Indicadores de compromiso

Indicadores en Registros Web (HTTP/S Logs y WAF)

  • Peticiones HTTP POST que incluyan identificadores de sesión (Ej. PHPSESSID) directamente en el cuerpo o parámetros de la solicitud, intentando eludir la directiva session.use_only_cookies.
  • Solicitudes HTTP que contengan nombres de archivo o cadenas anómalas, caracteres de escape o rutas de directorios dentro de la clave o parámetro asociado a PHP_SESSION_UPLOAD_PROGRESS.
  • Peticiones que muestren intentos de path traversal, uso de envolturas o referencias explícitas a la ruta de almacenamiento de sesiones del sistema operativo en /var/lib/php/sessions/.

Recomendaciones

  • Inventariar las instalaciones de PHP a través de servidores web, contenedores y entornos de alojamiento administrado para verificar la versión en uso frente al aviso oficial de seguridad.
  • Utilizar el entorno de laboratorio PHP-FPM y Nginx provisto exclusivamente para la validación autorizada y pruebas controladas; no ejecutar código de prueba de concepto contra sistemas de producción.
  • Prestar especial atención a los sistemas que ejecutan ramas PHP al final de su vida útil, ya que es posible que no reciban correcciones oficiales.
  • Revisar las aplicaciones en busca de vulnerabilidades de inclusión de archivos locales (LFI) y problemas de deserialización insegura.
  • Verificar los registros (logs) del servidor para detectar solicitudes inusuales que involucren el manejo de la sesión de PHP mientras se revisa el aviso oficial.

Referencias