El pasado 21 de octubre de 2026, el equipo de seguridad de PHP emitió un boletín de emergencia fuera de ciclo para corregir dos vulnerabilidades críticas de Ejecución Remota de Código (RCE) sin autenticación previa, rastreadas bajo los identificadores CVE-2026-109618 y CVE-2026-109619 (bautizadas conjuntamente por la comunidad de ciberseguridad como “PHP2Shell”, con severidad CVSS 9.2).
Dado que ambas fallas residen en la gestión de memoria interna del intérprete de PHP y en el ciclo de vida de los workers de FastCGI/PHP-FPM, cualquier servidor web expuesto a internet con versiones no parcheadas se encuentra en riesgo inminente de compromiso total.
1. Mecánica Técnica de las Vulnerabilidades
Ambos fallos explotan condiciones anómalas en el manejo de memoria durante el ciclo de vida de una petición HTTP:
CVE-2026-109618: RCE mediante Manejo de Excepciones OOM (longjmp)
Cuando PHP alcanza el límite de memoria asignado (memory_limit) durante el parseo de una petición maliciosa diseñada para inducir saturación, el motor ejecuta una llamada a longjmp() para abortar el contexto actual.
Sin embargo, el flujo de control deja estructuras de memoria parcialmente inicializadas. Cuando los destructores y rutinas de limpieza (garbage collector) intentan liberar esas estructuras, interpretan datos residuales controlados por el atacante como punteros válidos, permitiendo la corrupción controlada de memoria y ejecución arbitraria de instrucciones.
CVE-2026-109619: RCE por Estado Global Residual en Workers Persistentes
En entornos de producción de alto rendimiento (PHP-FPM o FastCGI), los procesos worker se reutilizan para múltiples peticiones consecutivas. Esta vulnerabilidad radica en punteros globales que referencian temporalmente buffers de la petición en curso.
Si la petición finaliza de forma abrupta por un error fatal, dichos punteros globales no se resetean a NULL. La siguiente petición legítima procesada por el mismo worker hereda punteros a memoria liberada (Use-After-Free), permitiendo a un atacante secuestrar el flujo de ejecución mediante colisiones en el montículo (heap spraying).
2. Matriz de Versiones Afectadas y Parches Oficiales
La vulnerabilidad afecta a todas las ramas activas de PHP anteriores al ciclo de parches del 21 de octubre:
| Rama de PHP | Versiones Vulnerables | Versión Mínima Parcheada | Estado |
|---|---|---|---|
| PHP 8.5 | 8.5.0 – 8.5.11 |
8.5.12 |
Parche disponible |
| PHP 8.4 | 8.4.0 – 8.4.26 |
8.4.27 |
Parche disponible |
| PHP 8.3 | 8.3.0 – 8.3.35 |
8.3.36 |
Parche disponible |
| PHP 8.2 | 8.2.0 – 8.2.34 |
8.2.35 |
Parche disponible |
| PHP 8.1 y anteriores | Todas las versiones | Sin parche upstream (EOL) | Crítico: Migración obligatoria |
⚠️ Atención: Las ramas PHP 8.1, 8.0 y 7.4 no recibieron parches oficiales de The PHP Foundation por estar fuera de ciclo de vida (EOL). Depender de parches comunitarios no oficiales en servidores de producción representa un riesgo inaceptable.
3. Comandos de Diagnóstico y Auditoría Rápida
Ejecuta en tu terminal para verificar de inmediato la versión exacta de los binarios y módulos en producción:
# 1. Verificar versión del CLI global
php -v | head -n 1
# 2. Verificar versión instalada del paquete PHP-FPM (RHEL / AlmaLinux / CentOS)
rpm -qa | grep -E "php.*(fpm|common)" | sort
# 3. En sistemas Debian / Ubuntu
dpkg -l | grep -E "php[0-9]\.[0-9]-(fpm|common)"
Si tu versión de PHP 8.3 es inferior a 8.3.36 o tu versión de PHP 8.2 es inferior a 8.2.35, el servidor es vulnerable.
4. Procedimiento de Actualización Inmediata
En AlmaLinux / Rocky Linux / RHEL (Repositorios Remi)
# Actualizar metadatos y aplicar parche a los paquetes de PHP
dnf clean all
dnf upgrade -y "php*"
# Reiniciar el servicio PHP-FPM para liberar memoria de workers antiguos
systemctl restart php-fpm
# En caso de entornos multi-PHP (ej. Remi modular)
systemctl restart php82-php-fpm php83-php-fpm php84-php-fpm
En Ubuntu / Debian (PPA de Ondřej Surý)
sudo apt update
sudo apt install --only-upgrade -y php8.3-fpm php8.3-cli php8.2-fpm php8.2-cli
sudo systemctl restart php8.3-fpm php8.2-fpm
En Servidores cPanel / WHM (EasyApache 4)
# Sincronizar paquetes de EasyApache y aplicar parches de seguridad
yum clean all || dnf clean all
ea-apache24-config-runtime
yum update -y ea-php* || dnf update -y ea-php*
/scripts/restartsrv_apache_php_fpm
5. Medidas de Mitigación Temporales (Si no puedes parchear hoy)
Si requieres una ventana de mantenimiento para aplicar el parche, implementa de inmediato estas mitigaciones para elevar la barrera de explotación:
- Reciclaje Agresivo de Workers en PHP-FPM (
pm.max_requests):
Reduce el tiempo de vida de los workers para que se destruyan antes de que un atacante pueda reutilizar estados globales corruptos:; En /etc/php-fpm.d/www.conf pm.max_requests = 100 - Ajuste Estricto de
memory_limity Restricción de Cargas:
Evita que peticiones no autenticadas manipulen buffers gigantescos en endpoints públicos. - Reglas de WAF (Cloudflare / Azure WAF):
Activa las firmas de inspección de payloads para CVE-2026-109618 en tu capa de perímetro para descartar micro-ráfagas destinadas a causar abortos OOM forzados.