Hoy no es un día normal para la comunidad de PHP. Lo que empezó como un rumor en redes sociales se convirtió en una de las alertas de seguridad más graves de los últimos años: dos vulnerabilidades críticas en el núcleo del lenguaje, apodadas PHP2Shell, que permiten a un atacante no autenticado tomar el control total de un servidor. La reacción no se ha hecho esperar: gobiernos de todo el mundo han desconectado sitios web y la NSA ha emitido una advertencia global.
Si gestionas servidores, aplicaciones o hosting, esto te afecta directamente. Aquí tienes el análisis completo y, sobre todo, los pasos concretos para mitigar el riesgo, con un apartado especial para los usuarios de CloudLinux.
¿Qué son exactamente CVE-2026-109618 y CVE-2026-109619?
Se trata de dos fallos en el propio motor de PHP, no en una aplicación, CMS o plugin específico. Ambos tienen una puntuación de criticidad CVSS v4.0 de 9.2 sobre 10 y permiten la Ejecución Remota de Código (RCE) sin autenticación.
La distinción técnica es importante:
-
CVE-2026-109618 (Corrupción en el manejo de Out-of-Memory): Cuando PHP se queda sin memoria, utiliza un mecanismo para interrumpir el procesamiento. Si esto ocurre antes de que ciertas estructuras internas terminen de inicializarse, quedan en un estado inválido. La rutina de limpieza posterior procesa esos datos corruptos, abriendo la puerta a la ejecución de código.
-
CVE-2026-109619 (Estado global obsoleto): Después de que la memoria de una petición se libera, el proceso worker de PHP puede retener referencias a ella. Una petición posterior, manejada por el mismo worker, puede llegar a utilizar ese estado obsoleto antes de que se reinicie correctamente, lo que también deriva en RCE.
El vector de ataque más crítico se da en entornos Apache con mod_php. La vulnerabilidad se explota antes de que se ejecute una sola línea del código de la aplicación, por lo que la autenticación a nivel de aplicación no sirve como defensa.
El contexto: una filtración que aceleró lo inevitable
La historia de esta divulgación es tan relevante como el fallo en sí. Los detalles técnicos y un exploit funcional (bautizado como «PHP2Shell») se filtraron en redes sociales el 20 de octubre, un día antes de la fecha prevista para el parche oficial.
El descubrimiento original se atribuye a la firma de seguridad Calif y a OpenAI (de forma independiente), con Wiz (propiedad de Google) encontrando posteriormente vectores de explotación adicionales. OpenAI, a través de su iniciativa Patch the Planet, ha señalado que este es uno de los fallos «con mayor impacto de los últimos tiempos» y un ejemplo de cómo la IA puede encontrar vulnerabilidades a escala de Internet.
Ante la filtración, el equipo de PHP adelantó el lanzamiento de la actualización de emergencia al 21 de octubre a las 14:00 UTC.
🌍 Reacción global: la NSA y los gobiernos desconectan sus sitios
La gravedad del asunto ha quedado patente en la respuesta institucional. La Agencia de Seguridad Nacional de Estados Unidos (NSA) instó a actualizar los sistemas «de inmediato» o, en su defecto, a desconectar los servidores vulnerables.
Varios gobiernos europeos han seguido esta recomendación de forma preventiva:
-
Francia: Desconectó portales de administraciones locales, incluyendo el sitio web de la Prefectura de Policía de París, a petición de su agencia nacional de ciberseguridad.
-
Países Bajos: Puso fuera de línea servicios críticos como DigiD (el sistema nacional de identidad digital), la web de la Cámara de Representantes y el portal del centro nacional de ciberseguridad.
-
Finlandia, Alemania y Bélgica también tomaron medidas similares sobre servicios gubernamentales.
🛠️ ¿Estás afectado? Versiones y parches oficiales
La respuesta es probablemente sí. Todas las versiones de PHP que sirven peticiones web están expuestas, desde PHP 5.0 en adelante. El equipo de PHP ha publicado actualizaciones de seguridad para las ramas mantenidas. La actualización es la ÚNICA solución completa; las mitigaciones temporales no eliminan el riesgo.
| Rama de PHP | Versión corregida (Actualizar a) |
|---|---|
| PHP 8.5.x | 8.5.12 |
| PHP 8.4.x | 8.4.27 |
| PHP 8.3.x | 8.3.36 |
| PHP 8.2.x | 8.2.35 |
Fuente: Aviso oficial de seguridad de PHP.net.
Nota sobre versiones EOL (End of Life): Las ramas PHP 8.1, 8.0, 7.x y 5.x ya no reciben soporte oficial. Sin embargo, debido a la gravedad, el equipo de PHP ha publicado parches retroportados (backports) en su repositorio de GitHub para las ramas 7.4, 8.0 y 8.1. Para versiones anteriores (7.3 y menores), no hay parche oficial.
⚠️ El caso de CloudLinux: mitigación interina vs. parche definitivo
Para los usuarios de CloudLinux, la situación tiene dos capas que es crucial entender para no llevarse a engaños.
1. Imunify360 (WAF): Tu escudo temporal automático
Si tienes CloudLinux con Imunify360 y su WAF (ModSecurity) habilitado, ya cuentas con una protección automática. CloudLinux ha desplegado el ruleset 8.83, que bloquea la «forma» del exploit público conocido.
-
Ventaja: Es automático y bloquea el ataque en el borde del servidor, sin tocar el código PHP vulnerable.
-
Limitación Crítica: CloudLinux es explícito: «Esta es una mitigación interina, no una solución». Un ataque que varíe ligeramente el patrón del exploit público podría no ser detectado por la regla del WAF. No te protege de forma completa.
2. Paquetes alt-php: La solución real (aún en camino)
El parche definitivo para tu PHP personalizado de CloudLinux llegará a través de los paquetes alt-php.
-
Estado actual: CloudLinux está «trabajando en los paquetes
alt-phpcon la corrección». Aún no hay una fecha exacta de disponibilidad; la línea de tiempo se publicará en su página de estado. -
Qué hacer: Debes monitorear activamente la página de estado de CloudLinux para saber cuándo aplicar la actualización en cuanto se libere.
📋 Plan de acción: qué hacer ahora mismo
Tu estrategia depende de tu configuración, pero el objetivo final es el mismo: actualizar el intérprete de PHP.
-
Inventario: Identifica todos los servidores, contenedores y paneles (cPanel, Plesk) que ejecuten PHP y determina su versión exacta y modo de ejecución (
mod_php, PHP-FPM, etc.). -
Si usas CloudLinux con Imunify360: Estás cubierto contra el exploit público por el WAF. Tu prioridad es aplicar los paquetes
alt-phpen cuanto CloudLinux los publique. -
Si usas CloudLinux sin WAF (o
alt-phpestá pendiente): No tienes la cobertura del ruleset 8.83. Debes priorizar la actualización dealt-phpen cuanto esté disponible y, mientras tanto, evaluar la mitigación manual (ver abajo). -
Si usas PHP de distribución o paneles (cPanel, Plesk): Aplica las actualizaciones de los paquetes del proveedor (Remi, Sury, EA4, etc.) tan pronto como estén disponibles. Suelen llegar horas o días después del lanzamiento oficial.
-
Mitigación temporal (solo como último recurso): Si no puedes parchear de inmediato, puedes deshabilitar
session.upload_progress.enabled = Offenphp.ini. Esto solo cierra una de las rutas de ataque conocidas y no te hace seguro, pero reduce la superficie de exposición.
La jornada de hoy deja una lección clara: la seguridad del runtime es tan crítica como la de la aplicación. Un fallo en los cimientos de PHP puede poner en jaque a millones de sitios a la vez. Mantente alerta a las actualizaciones de tu proveedor y, si tienes dudas, la regla de oro es simple: actualiza en cuanto puedas.
