La respuesta corta
PHP2Shell es un par de fallos críticos de ejecución remota de código en el intérprete de PHP, y la única solución real es actualizar a PHP 8.5.12, 8.4.27, 8.3.36 o 8.2.35. Registrados como CVE-2026-109618 y CVE-2026-109619 y con una puntuación de 9.2 en CVSS v4.0, están por debajo de cualquier framework, de modo que Laravel, Symfony, WordPress y las aplicaciones PHP a medida quedan todos dentro del alcance. Existen medidas provisionales de configuración, pero el proyecto PHP afirma que ninguna es completa.
La urgencia viene del calendario. Los detalles y vídeos del exploit se filtraron el 20 de octubre, el equipo de seguridad de PHP adelantó su publicación un día y los proveedores empezaron a informar de sondeos en cuestión de horas. Los equipos que aún ejecutan PHP 8.1 o 7.x, ya sin soporte, no tienen ningún paquete oficial que instalar, lo que convierte un trabajo de parcheo en un proyecto de actualización.
¿Qué son los fallos PHP2Shell?
Ambos errores son fallos de seguridad de memoria en la forma en que PHP prepara y cierra una petición web. En CVE-2026-109618, la gestión de falta de memoria puede interrumpir PHP mientras los datos internos de la petición están inicializados solo en parte, y el código de limpieza trata después esos datos a medio construir como válidos. En CVE-2026-109619, el estado que pertenece a una petición puede sobrevivir a la memoria que lo respalda, de modo que la siguiente petición que atienda el mismo proceso worker puede leer el estado obsoleto antes de que la inicialización normal lo restablezca. El segundo problema es accesible a través de la función de progreso de subida de la sesión, que está activada por defecto.
Lo que hace inusual a esta pareja es dónde se encuentran. La mayoría de los incidentes de PHP tienen que ver con un plugin, una ruta de un framework o un error de la aplicación, que se pueden parchear o desactivar en la capa de aplicación. PHP2Shell está en el runtime, así que su código, su framework y su validación de entradas no tienen nada que decir. Según la propia evaluación del proyecto PHP, el riesgo es mayor con Apache y mod_php, donde un exploit demostrado se dispara desde una petición sin autenticar antes de que se ejecute código de la aplicación.
Los fallos se descubrieron mediante investigación asistida por IA. La empresa de seguridad Calif identificó el primer problema en agosto con el modelo GPT-5.6 Sol de OpenAI durante una auditoría financiada por OpenAI, Wiz Research encontró problemas relacionados con sus propias herramientas y con Gemini de Google, y el equipo de Codex Security de OpenAI participó en la divulgación coordinada con el equipo de seguridad de PHP. El embargo debía levantarse el 22 de octubre; capturas de pantalla y un vídeo filtrados de una herramienta de exploit llamada PHP2Shell obligaron a publicar la corrección un día antes.
¿Qué servidores PHP están expuestos?
En resumen, toda instalación PHP que responde a peticiones web. El proyecto PHP cita PHP-FPM, Apache con mod_php, php-cgi, FrankenPHP y LiteSpeed. Eso abarca por igual el alojamiento compartido detrás de un sitio de marketing, el contenedor que ejecuta una API de Laravel, la tienda WooCommerce y la intranet interna en Drupal. PHP de línea de comandos usado solo para tareas cron o scripts de compilación no es el objetivo; el ataque necesita que una petición web llegue al worker.
El soporte de versiones es el segundo filtro. Solo las cuatro ramas mantenidas recibieron compilaciones corregidas. PHP 8.1 y versiones anteriores han llegado al final de su vida útil y no reciben versiones oficiales; el proyecto solo publicó backports mínimos del código fuente para 7.4, 8.0 y 8.1, que tendría que compilar y empaquetar usted mismo. CyberScoop, citando datos de escaneo, estimó entre 1.3 y 1.9 millones de hosts vulnerables expuestos a internet, de los cuales unos 758,000 servidores expuestos ejecutan versiones sin soporte de la 5.4 a la 8.1. Para esos equipos, la solución honesta es actualizar el runtime, no aplicar un parche.
El tercer filtro es su modelo de alojamiento. Las plataformas gestionadas y los pipelines de contenedores bien llevados pueden desplegar una nueva imagen base en toda una flota en cuestión de horas. Las máquinas virtuales montadas a mano, los appliances de proveedores que incluyen PHP y las cuentas antiguas de alojamiento compartido son donde suelen quedarse los runtimes sin parchear, a menudo sin que nadie lo note hasta que algo falla.
¿Se está explotando ya PHP2Shell?
En su alerta del 21 de octubre, la CISA afirmó que no había observado explotación, pero instó a las organizaciones a inventariar sus sistemas PHP, parchear primero los expuestos a internet, desconectar los sistemas que no se puedan actualizar y vigilar los procesos worker de PHP que abran shells o descarguen herramientas. Desde entonces, BleepingComputer informó de los primeros intentos de ataque observados por Cloudflare, y watchTowr dijo que había reproducido uno de los fallos. Huntress afirmó que no había confirmado compromisos con éxito en entornos reales en los sistemas de sus clientes.
Interprételo como el inicio de una curva conocida y no como algo tranquilizador. Los errores son difíciles de explotar a mano, pero la filtración expuso públicamente el comportamiento de una herramienta funcional un día antes de la corrección, y la investigación asistida por IA ha abaratado la reproducción de cadenas complejas de corrupción de memoria. El margen entre la divulgación y la explotación masiva fiable de fallos de esta gravedad suele medirse en horas o días.
Qué significa para los equipos de software de EE. UU. y la UE
Primero, se trata de un parche del runtime, así que corresponde a quien gestione sus imágenes base y servidores, no solo al equipo de la aplicación. Actualice el paquete de PHP o la imagen del contenedor, reinicie todos los workers para que ningún proceso conserve el binario antiguo en memoria y confirme la versión en ejecución en cada host. Si su PHP procede de una distribución Linux, compruebe que su repositorio de seguridad ha publicado la corrección con backport en lugar de suponer que se aplica el número de versión upstream.
Segundo, los controles provisionales ganan tiempo, pero no seguridad. Las medidas provisionales del proyecto PHP incluyen establecer session.upload_progress.enabled=0 y reiniciar los workers, establecer fatal_error_backtraces=0 en PHP 8.5, mantener bajo post_max_size y aplicar límites de memoria a los contenedores. Una regla de WAF ayuda frente a payloads conocidos. El proyecto califica todas estas medidas de incompletas, así que considérelas unas horas de cobertura mientras se despliega la actualización. Una auditoría de seguridad específica es la forma más rápida de encontrar los hosts PHP que nadie recuerda tener.
Tercero, los plazos de cumplimiento pueden estar corriendo ya. Para los equipos de la UE, el compromiso de una aplicación PHP que contenga datos personales abre el plazo de 72 horas del RGPD para notificar violaciones de seguridad, y los proveedores de productos con elementos digitales tienen ahora las obligaciones de notificación de vulnerabilidades del Reglamento de Ciberresiliencia. Para los equipos de EE. UU. en pagos o sanidad, PCI DSS y HIPAA esperan un parcheo documentado y oportuno de los fallos críticos. Ejecutar un runtime sin soporte con un RCE crítico conocido es difícil de defender ante cualquier auditor.
La lección a largo plazo tiene que ver con el ciclo de vida del runtime. Los equipos que siguen las fechas de soporte de PHP y actualizan según un calendario verán PHP2Shell como un despliegue más. Los equipos en PHP 7.4 o 8.1 se enfrentan a la versión más cara de esta noticia: una emergencia, una actualización del framework y un esfuerzo de pruebas de regresión, todo a la vez.
Qué hacer esta semana
- Inventaríe cada runtime de PHP. Enumere los servidores, contenedores, cuentas de alojamiento compartido y appliances que sirven PHP por HTTP, con sus versiones exactas.
- Actualice ya las ramas con soporte. Pase a 8.5.12, 8.4.27, 8.3.36 o 8.2.35, reconstruya las imágenes base y reinicie todos los workers.
- Verifique la versión en ejecución. Compruebe cada host tras el despliegue; un pool de FPM obsoleto o una imagen en caché pueden mantener vivo el binario antiguo.
- Aplique medidas provisionales donde no pueda parchear hoy. Desactive el progreso de subida de la sesión, desactive los backtraces de errores fatales en PHP 8.5, ajuste los límites de subida y de memoria y coloque reglas de WAF delante.
- Busque indicios de compromiso. Busque workers de PHP que abran shells, descargas salientes inesperadas y archivos nuevos en las raíces web desde el 20 de octubre.
- Programe la actualización de las versiones sin soporte. Si ejecuta 8.1 o una versión anterior, defina ya el paso a una rama con soporte en lugar de compilar indefinidamente backports no oficiales.
Preguntas frecuentes
¿Qué es PHP2Shell?
PHP2Shell es el nombre que se ha dado a dos vulnerabilidades críticas del propio intérprete de PHP, CVE-2026-109618 y CVE-2026-109619, ambas con una puntuación de 9.2 en la escala CVSS v4.0. La primera es una corrupción de memoria que se produce cuando la gestión de falta de memoria interrumpe una petición inicializada solo en parte; la segunda permite que el estado de una petición sobreviva después de liberarse su memoria, de modo que una petición posterior en el mismo worker puede usarlo. Cualquiera de las dos puede derivar en ejecución remota de código sin autenticación.
¿Qué versiones de PHP están corregidas?
El proyecto PHP publicó PHP 8.5.12, 8.4.27, 8.3.36 y 8.2.35 el 21 de octubre de 2026. PHP 8.1 y las ramas anteriores ya no reciben versiones oficiales; el proyecto solo publicó backports mínimos del código fuente para 7.4, 8.0 y 8.1, que tendría que compilar usted mismo. Cualquier versión por debajo de las cuatro corregidas debe considerarse vulnerable.
¿Qué servidores están en riesgo?
Según el proyecto PHP, todas las instalaciones PHP que atienden peticiones web están en riesgo, incluidas PHP-FPM, Apache con mod_php, php-cgi, FrankenPHP y LiteSpeed. El riesgo es mayor con mod_php, donde un exploit demostrado permite que una petición sin autenticar desencadene el ataque antes de que se ejecute código de la aplicación. Eso significa que frameworks como Laravel, Symfony, WordPress o Drupal no pueden protegerle por sí solos: el fallo está por debajo de ellos.
¿Se está explotando PHP2Shell?
La CISA afirmó el 21 de octubre de 2026 que no había observado explotación en el momento de su alerta. Desde entonces, proveedores de seguridad han informado de reconocimiento e intentos de explotación, y watchTowr reprodujo uno de los fallos, pero equipos de respuesta como Huntress dijeron que no habían confirmado compromisos con éxito en entornos reales. Los detalles y vídeos del exploit se filtraron un día antes de la divulgación, así que lo prudente es suponer que los exploits funcionales se extenderán con rapidez.
¿Puedo mitigar PHP2Shell sin actualizar?
Solo en parte. El proyecto PHP enumera medidas provisionales como establecer session.upload_progress.enabled=0 y reiniciar todos los workers, establecer fatal_error_backtraces=0 en PHP 8.5, mantener bajo post_max_size y apoyarse en los límites de memoria de los contenedores, y la CISA recomienda un firewall de aplicaciones web como control provisional. El proyecto PHP afirma claramente que no hay mitigaciones completas y que actualizar es la única opción segura.
Fuentes
PHP project — security releases 8.5.12, 8.4.27, 8.3.36 and 8.2.35 (en inglés) (21 de octubre de 2026)
CISA — Critical Vulnerabilities in PHP Require Immediate Patching (en inglés)
BleepingComputer — PHP ships emergency patches for critical PHP2Shell flaws (en inglés)
CyberScoop — PHP releases emergency fixes for 2 critical vulnerabilities (en inglés)