Alerta de seguridad · PHP · Actualizado el 23 de octubre de 2026
Dos vulnerabilidades críticas en el núcleo de PHP permiten, bajo determinadas condiciones, ejecutar código de forma remota sin autenticación. La IA ayudó a confirmar la causa raíz y encontrar nuevos vectores, pero la respuesta útil para cualquier empresa es inequívoca: identificar, actualizar, reiniciar y verificar.
Acción inmediata: actualiza a PHP 8.5.12, 8.4.27, 8.3.36 o 8.2.35, según tu rama. Reinicia todos los workers y comprueba la versión que realmente atiende peticiones web. PHP 8.1 y ramas anteriores ya no reciben correcciones del proyecto PHP; si dependes de un proveedor LTS, exige confirmación documental del backport.
Resumen inicial
- CVE-2026-109618 permite corrupción de memoria cuando un error de falta de memoria interrumpe PHP con estructuras internas parcialmente inicializadas.
- CVE-2026-109619 permite que un worker reutilice estado global que apunta a memoria ya liberada entre dos peticiones.
- Ambos fallos están catalogados como críticos, con CVSS 9,2, y pueden derivar en ejecución remota de código sin credenciales.
- El riesgo es especialmente alto en Apache con mod_php, donde se demostró explotación antes de que comience el código de la aplicación. PHP-FPM y otros SAPI también requieren actualización.
- La IA aceleró la investigación, la validación y la agrupación de hallazgos, pero cada decisión de seguridad y cada parche fueron revisados por personas.
- Las mitigaciones de configuración solo reducen exposición. Actualizar es la única corrección completa.
Guía inicial: qué hacer en los próximos 30 minutos
En una alerta de este nivel, el orden importa. No empieces buscando indicadores sofisticados si todavía no sabes qué versión está sirviendo cada aplicación. Trabaja de fuera hacia dentro: exposición, versión efectiva y parche.
Identifica lo expuesto
Haz inventario de dominios, balanceadores, contenedores, pools FPM, servidores Apache, imágenes base y servicios de terceros que procesen peticiones con PHP.
Actualiza y reinicia
Instala el paquete corregido de tu proveedor y reinicia todos los workers. Un binario actualizado en disco no protege un proceso antiguo que sigue en memoria.
Verifica y monitoriza
Confirma la versión del runtime web, revisa el aviso del proveedor y busca procesos hijos, caídas, OOM, cambios de archivos o conexiones salientes anómalas.
Qué ha pasado con PHP y por qué es crítico
El 21 de octubre de 2026, el proyecto PHP publicó versiones de emergencia para corregir dos vulnerabilidades relacionadas en el motor. No son fallos de una aplicación concreta ni de un plugin: viven en zonas centrales del runtime, como la gestión de memoria, el tratamiento de errores y el estado que conservan los procesos entre peticiones.
Eso amplía la superficie afectada. Una aplicación puede tener el código actualizado y seguir expuesta si la versión de PHP que la ejecuta no contiene el parche. La alerta oficial incluye instalaciones que sirven tráfico web mediante PHP-FPM, Apache con mod_php, php-cgi, FrankenPHP y LiteSpeed.
| Rama | Vulnerable si es anterior a | Versión corregida | Acción |
|---|---|---|---|
| PHP 8.5 | 8.5.12 | 8.5.12 | Actualizar y reiniciar workers |
| PHP 8.4 | 8.4.27 | 8.4.27 | Actualizar y reiniciar workers |
| PHP 8.3 | 8.3.36 | 8.3.36 | Actualizar y reiniciar workers |
| PHP 8.2 | 8.2.35 | 8.2.35 | Actualizar y reiniciar workers |
| PHP 8.1 o anterior | Sin soporte upstream | Depende del proveedor LTS | Migrar o verificar un backport firmado |
Importante: una distribución Linux puede aplicar un backport y mantener una numeración que parece antigua. No decidas solo por la cadena de versión: contrasta el paquete instalado con el aviso de seguridad de tu proveedor.
Las dos vulnerabilidades, explicadas sin ruido
CVE-2026-109618: corrupción al gestionar un error de memoria
PHP utilizaba un salto de ejecución para abandonar rápidamente ciertos contextos cuando se agotaba el límite de memoria. Si ese fallo ocurría en el momento equivocado, podía quedar memoria de la petición accesible antes de terminar de inicializarse. Durante la limpieza, PHP podía tratar ese estado inválido como si fuera correcto.
Se demostraron estrategias capaces de provocar esta condición con peticiones especialmente construidas. En Apache con mod_php, el ataque podía completarse antes de que empezara el código de WordPress, Laravel, Symfony o cualquier otra aplicación. Por eso un control dentro de la aplicación no basta.
CVE-2026-109619: estado global obsoleto entre peticiones
Los workers de PHP reutilizan procesos para atender muchas peticiones. Parte del estado interno debe limpiarse con precisión al acabar cada una. Un error fatal en el momento equivocado podía dejar una referencia hacia memoria ya liberada. Una petición posterior atendida por el mismo worker podía consumir ese estado obsoleto y provocar un use-after-free.
La explotación requiere encadenar un productor, que deja el estado inseguro, con un consumidor posterior. Esa complejidad no reduce la prioridad: se demostró ejecución remota de código y el impacto abarca confidencialidad, integridad y disponibilidad.
Cómo ayudó la IA a identificar estos fallos
Decir que “la IA descubrió PHP2Shell” es una simplificación. La historia real muestra un proceso acumulativo: una auditoría humana detectó señales, equipos especializados profundizaron en la causa raíz y sistemas de IA ayudaron a recorrer más código, probar hipótesis, relacionar informes y ampliar vectores de ataque.
Primera señal en una auditoría externa
Durante una auditoría de Quarkslab, un desarrollador del núcleo encontró indicios del problema de OOM. Se planteó un impacto potencial, pero aún no existía un vector concreto de ejecución remota.
Se confirma la gravedad
Calif informó de una ruta de RCE con la misma causa. OpenAI comunicó de forma independiente esa causa raíz el mismo día.
Aparecen vectores adicionales
Wiz aportó hallazgos el 24 de agosto y OpenAI comunicó más vectores el 18 de septiembre. Trail of Bits también auditó PHP.
Parche coordinado
PHP publicó correcciones para todas las ramas soportadas y backports mínimos para ayudar a ciertos usuarios de ramas antiguas.
Qué hace bien la IA en investigación de seguridad
- Recorrer grandes bases de código y priorizar rutas poco evidentes.
- Proponer casos límite para fuzzing y análisis dinámico.
- Relacionar informes diferentes que comparten una misma causa.
- Reducir el tiempo entre una anomalía y una hipótesis reproducible.
- Ayudar a comprobar que el parche cierra variantes relacionadas.
La lectura empresarial es clara: la IA puede aumentar mucho la velocidad de ataque y defensa. Un ejemplo relacionado es el análisis de Datision sobre ransomware agéntico, IA y ciberseguridad, donde la ventaja no está en una única técnica, sino en la capacidad de encadenar pasos con rapidez.
Para consultar la cronología técnica y el criterio oficial, la referencia externa recomendada es el análisis de la Fundación PHP sobre la publicación de seguridad y el proceso de investigación.
Comprueba si tu web puede estar expuesta
Usa el comprobador de Datision como primera señal y confirma después la versión instalada, el paquete del proveedor y el proceso web activo. Una comprobación externa no puede demostrar por sí sola que un servidor esté parcheado o comprometido.
Cómo protegerse: plan de actualización y contención
1. Inventaría el PHP que realmente sirve tráfico
Ejecutar php -v en una consola solo identifica ese binario. El servidor web puede usar otro paquete, otro contenedor, otro pool FPM o incluso otro host. Comprueba cada ruta de producción y cada réplica detrás del balanceador.
2. Actualiza desde una fuente de confianza
Instala la versión corregida de tu rama mediante el repositorio de la distribución, la imagen oficial o tu proveedor gestionado. Evita binarios de procedencia desconocida. Si utilizas una rama sin soporte, prioriza la migración; un backport solo es aceptable si el proveedor lo documenta y mantiene.
3. Reinicia todos los procesos
Reinicia PHP-FPM, Apache, LiteSpeed, FrankenPHP, contenedores y réplicas. Después, verifica que no queda ningún worker antiguo. En un despliegue con alta disponibilidad, rota instancias de forma controlada sin dejar nodos vulnerables detrás del balanceador.
4. Valida aplicación y observabilidad
Prueba login, formularios, subidas, sesiones, tareas programadas y conexiones a base de datos. Vigila errores 5xx, reinicios de workers, consumo de memoria, latencia y colas. El parche es prioritario, pero el cambio debe quedar verificado operativamente.
5. Si no puedes parchear, reduce exposición
Aísla los servicios no esenciales y limita el tráfico que llega a PHP. Las medidas temporales publicadas por el proyecto pueden reducir rutas concretas, pero no hacen segura una instalación vulnerable:
- Aplicar administrativamente
memory_limit=-1y comprobar que ninguna aplicación o pool restaura un límite finito. - Usar un
post_max_sizebajo y límites independientes en proxy o servidor para tamaño decodificado, campos, cabeceras, partes multipart y profundidad. - Desactivar
session.upload_progress.enabledy reiniciar todos los workers. - En PHP 8.5, desactivar temporalmente
fatal_error_backtracesy reiniciar workers. - Eliminar configuraciones inválidas o deprecadas que produzcan diagnósticos antes de la inicialización.
- Usar límites de contenedor o cgroup como frontera de disponibilidad. No sustituirlos por
RLIMIT_ASoRLIMIT_DATA.
No conviertas una mitigación en una excusa para aplazar el parche. Estas medidas cubren rutas conocidas, pueden afectar al comportamiento de la aplicación y no eliminan todas las variantes.
Qué revisar después de parchear
Corregir la vulnerabilidad evita nuevas explotaciones, pero no borra una intrusión anterior. Si el servicio estuvo expuesto, combina la actualización con una revisión de compromiso y persistencia.
- Workers PHP que lancen shells, intérpretes o procesos hijos inesperados.
- Picos de OOM, reinicios, segmentation faults o errores 5xx anómalos.
- Peticiones multipart inusuales por tamaño, número de partes o cabeceras.
- Archivos PHP nuevos o modificados fuera del flujo de despliegue.
- Tareas programadas, usuarios, claves SSH y credenciales alteradas.
- Conexiones salientes o accesos a secretos que no encajan con la aplicación.
- Imágenes de contenedor y nodos olvidados que mantengan versiones antiguas.
- Cabeceras que revelen innecesariamente la versión del runtime.
Si encuentras señales, preserva evidencias, rota credenciales y activa el procedimiento de respuesta a incidentes. Actualizar no sustituye la investigación forense cuando existe una sospecha razonable.
Qué deben hacer los responsables de WordPress y hosting
En WordPress, actualizar el CMS, el tema y los plugins sigue siendo necesario, pero no corrige estas CVE. El parche está en PHP. Si el alojamiento es gestionado, solicita al proveedor la versión efectiva, la referencia del paquete y la fecha en la que reinició los workers.
Los proveedores de hosting deberían localizar versiones por dominio y pool, desplegar el parche de forma escalonada, reiniciar procesos, verificar el runtime servido y comunicar a los clientes cualquier incompatibilidad. Ocultar la cabecera X-Powered-By reduce información visible, pero tampoco corrige el fallo.
Preguntas frecuentes
¿Qué versiones de PHP corrigen las vulnerabilidades críticas?
Las versiones corregidas son PHP 8.5.12, 8.4.27, 8.3.36 y 8.2.35. Las ramas 8.1 y anteriores no reciben soporte directo del proyecto PHP; algunos proveedores LTS pueden ofrecer backports que deben verificarse en su aviso oficial.
¿Mi WordPress está protegido si está actualizado?
No necesariamente. Estos fallos afectan al runtime de PHP, por debajo de WordPress. Debes actualizar tanto PHP como el CMS, los temas y los plugins, y reiniciar los procesos que atienden tráfico.
¿Un comprobador externo confirma que no soy vulnerable?
No por sí solo. Puede detectar una versión expuesta o aportar una primera señal, pero algunos servidores ocultan la versión y algunos proveedores aplican backports. La confirmación fiable combina comprobación externa, inventario interno y aviso del proveedor.
¿La IA descubrió estas vulnerabilidades sin ayuda humana?
No. Hubo señales desde una auditoría de 2024 y varios equipos aportaron hallazgos. La investigación asistida por IA ayudó a confirmar causas, ampliar vectores y agrupar informes. Personas reprodujeron los fallos, evaluaron el riesgo y desarrollaron y revisaron el parche.
¿Un WAF bloquea completamente el ataque?
No. Los límites de petición y reglas de perímetro pueden reducir rutas conocidas, pero el proyecto PHP afirma que actualizar es la única solución completa. Un WAF es una capa adicional, no el parche.
¿Qué hago si mi proveedor todavía no ofrece el parche?
Escala la solicitud, documenta el riesgo, aplica las mitigaciones temporales compatibles y aísla los servicios no esenciales expuestos a Internet. Si el proveedor no ofrece una ruta verificable, prepara una migración urgente.
La lección estratégica: la velocidad ya forma parte de la seguridad
Estas vulnerabilidades muestran las dos caras de la IA en ciberseguridad. Los defensores pueden analizar más código, validar hipótesis y encontrar variantes con mayor rapidez; los atacantes pueden aprovechar la misma aceleración cuando los detalles se hacen públicos.
La ventaja sostenible no consiste en confiar ciegamente en una herramienta. Consiste en mantener un inventario vivo, reducir la superficie expuesta, parchear con disciplina, verificar lo que realmente está en producción y conservar supervisión humana sobre las decisiones críticas.
