La comunidad de PHP ha respondido con urgencia a la aparición de dos vulnerabilidades de seguridad de alta severidad, colectivamente denominadas PHP2Shell, que representan una amenaza crítica para la infraestructura web global. Estos fallos, identificados como CVE-2026-109618 y CVE-2026-109619, permiten la ejecución remota de código (RCE) sin necesidad de autenticación, alcanzando una puntuación de 9.2 en el sistema CVSS v4.0. La alarma es aún mayor debido a la detección de intentos de explotación activa y la circulación de payloads maliciosos diseñados para evadir defensas perimetrales como los WAF.
PHP2Shell: Una Amenaza Crítica con Explotación Activa
Estas vulnerabilidades no solo son críticas por su capacidad de permitir la RCE, sino también por la facilidad con la que pueden ser desencadenadas. Un aspecto particularmente preocupante es que la superficie de ataque no depende de la complejidad o del código de la aplicación web desplegada. Un servidor ejecutando cualquier versión vulnerable del runtime de PHP es susceptible, incluso si aloja páginas estáticas o triviales. Esto es especialmente relevante en configuraciones comunes como Apache con mod_php, donde se ha demostrado que el vector de ataque puede activarse antes de que el código de la aplicación sea siquiera procesado, afectando directamente al motor de PHP.
Profundizando en las Vulnerabilidades: CVE-2026-109618 y CVE-2026-109619
El problema subyacente de PHP2Shell se desglosa en dos CVEs específicos:
- CVE-2026-109618: Esta cadena de fallos culmina en una corrupción de memoria que puede ser explotada para lograr la ejecución de código con los permisos del proceso del servidor web. La explotación exitosa puede llevar al control total del servidor afectado.
- CVE-2026-109619: Se describe como un problema de estado global obsoleto que puede provocar condiciones de use-after-free. Esto, a su vez, puede resultar en la divulgación de memoria sensible y, en escenarios específicos, la ejecución de código con los privilegios del worker de PHP. La fuga de memoria es especialmente peligrosa, ya que un atacante podría extraer datos confidenciales en la RAM, como credenciales, tokens API, claves de cifrado o certificados.
Amplio Alcance y Vectores de Ataque
La superficie afectada por PHP2Shell es considerable, abarcando diversas configuraciones de despliegue de PHP, incluyendo:
- PHP-FPM
- php-cgi
- FrankenPHP
- LiteSpeed
- Y, de manera prominente, Apache con
mod_php
La capacidad de un atacante para activar estos fallos antes de que el código de la aplicación se ejecute subraya la gravedad y la necesidad de una acción inmediata a nivel de sistema.
Acción Inmediata: Actualización y Reinicio de Servicios
Dada la criticidad y la explotación activa, la recomendación principal es actualizar las versiones de PHP a las siguientes, que ya incluyen los parches de seguridad:
- PHP 8.5.12
- PHP 8.4.27
- PHP 8.3.36
- PHP 8.2.35
Es fundamental comprender que la simple instalación del paquete actualizado no es suficiente. Para garantizar que los procesos de PHP carguen la versión parcheada del runtime, es imperativo reiniciar todos los servicios relacionados. Esto incluye el servidor web (Apache, Nginx), el gestor de procesos de PHP (PHP-FPM) y cualquier otro worker persistente que utilice PHP. A continuación, se muestran ejemplos de comandos para reiniciar los servicios más comunes en sistemas Linux:
# Para sistemas con systemd (ej. Ubuntu, Debian, CentOS 7+, RHEL 7+):
sudo systemctl restart apache2 # o httpd
sudo systemctl restart php-fpm # (la versión puede variar, ej. php8.2-fpm)
# Para sistemas con SysVinit o init.d (versiones antiguas):
sudo service apache2 restart # o httpd
sudo service php-fpm restart # (la versión puede variar)
Además, es crucial que los administradores que dependan de distribuciones Linux o proveedores con soporte extendido revisen los changelogs de los paquetes. Algunos mantenedores pueden aplicar parches de seguridad sin reflejarlo directamente en el número de versión principal.
Medidas de Contención para Entornos No Actualizables
Aunque la actualización es la única solución definitiva, existen medidas de mitigación parciales para entornos donde la actualización inmediata no sea viable. Estas no eliminan la vulnerabilidad, pero pueden dificultar su explotación:
- Para CVE-2026-109618:
- Fijar
memory_limit=-1en la configuración de PHP, asegurando que las aplicaciones no puedan sobrescribirlo. - Mantener el valor de
post_max_sizebajo. - Limitar el tamaño de las peticiones HTTP en el servidor web o el proxy inverso.
- Evitar el uso de
RLIMIT_ASoRLIMIT_DATAcomo sustitutos de los límites de memoria, ya que pueden activar rutas vulnerables.
- Fijar
- Para CVE-2026-109619:
- Desactivar
session.upload_progress.enabledy reiniciar todos los workers de PHP. - En versiones PHP 8.5, una contención adicional pasa por desactivar
fatal_error_backtracesy reiniciar los procesos.
- Desactivar
Recomendaciones Post-Parche y Monitorización
Tras la aplicación de los parches, los equipos de DevOps y SRE deben estar atentos a cualquier cambio en el comportamiento de las aplicaciones. La corrección introduce un límite de memoria estricto cuyo alcance podría terminar procesos inesperadamente y saltarse manejadores de apagado. Paralelamente, es indispensable establecer y monitorizar señales que puedan indicar intentos de explotación, tales como:
- Peticiones
multipartanómalas seguidas de errores de límite de memoria. - Oleadas de códigos de estado HTTP 500 (Error Interno del Servidor).
- Cookies
PHPSESSIDde tamaño inusual. - Reinicios inexplicables de workers de PHP-FPM.
Finalmente, este incidente subraya nuevamente la presión crítica para modernizar las versiones de PHP. Las ramas PHP 8.1 y anteriores ya no reciben soporte ni actualizaciones de seguridad del proyecto oficial, convirtiendo su uso en un riesgo latente constante que va más allá del simple mantenimiento de versiones.
Mantener una postura de seguridad proactiva y diligente en el ecosistema PHP es crucial. La ventana de oportunidad para los atacantes se cierra con cada actualización, pero se abre con cada retraso. ¡Actualice sus sistemas sin demora!






