PHP2Shell: ¿está en riesgo su infraestructura PHP?

Una guía práctica del SOC para comprobar si sus sistemas PHP presentan vulnerabilidades, evaluar su exposición y tomar las medidas adecuadas para proteger su infraestructura.

PHP2Shell: ¿está en riesgo su infraestructura PHP?
En resumen: qué ha ocurrido y qué hacer

Dos vulnerabilidades críticas, CVE-2026-109618 y CVE-2026-109619 (CVSS v4.0: 9.2, puntuación asignada por PHP), afectan al entorno de ejecución de PHP y pueden permitir la ejecución remota de código sin autenticación. PHP publicó las correcciones el 21 de octubre de 2026: 8.2.35, 8.3.36, 8.4.27 y 8.5.12. Una tercera vulnerabilidad, CVE-2026-115560, divulgada el 23 de octubre, sigue sin parche en esas versiones y tiene condiciones de explotación específicas.

La prioridad es identificar la versión de PHP que realmente sirve el tráfico web, aplicar la versión corregida y reiniciar o recargar los procesos PHP. No basta con comprobarlo con php -v: el CLI, PHP-FPM y el módulo PHP de Apache pueden ejecutar versiones distintas. Incluya en su inventario los contenedores, los entornos de prueba y los productos que integran PHP.

En paralelo, vigile los indicios de explotación: procesos web que lanzan shells, solicitudes multipart sospechosas, caídas de workers y nuevos archivos PHP en los directorios de subida.

En resumen: qué ha ocurrido y qué hacer

Por qué es importante

Según W3Techs, a 21 de octubre de 2026, PHP se utilizaba en el 69,2 % de los sitios web cuyo lenguaje del lado del servidor se conoce, una estadística que Hadrian utilizó en su análisis de PHP2Shell para ilustrar la posible magnitud de la exposición. Este porcentaje no significa que el 69,2 % de los sitios sean vulnerables; la exposición real depende de la versión instalada, de los paquetes del distribuidor y de la configuración del sistema.

La exposición no es meramente teórica. Wiz Research demostró la ejecución de código sin autenticación en las imágenes oficiales de contenedor actuales de WordPress, Drupal y Joomla. Por tanto, las instalaciones estándar de CMS son objetivos directos, sin necesidad de ninguna configuración especial.

Lo que sabemos sobre la explotación a 27 de octubre

Amazon Threat Intelligence observó un intento en sus honeypots MadPot el 17 de octubre, antes de que se publicaran las vulnerabilidades y los parches. Por tanto, la revisión retroactiva de los registros debe comenzar a partir del 17 de octubre de 2026. Posteriormente se notificaron intentos de escaneo y de explotación, y se hicieron públicas varias PoC.

El 24 de octubre apareció la primera confirmación pública de alta calidad de una explotación con éxito: Adel Karimi, responsable de detección y respuesta en Perplexity, registró en sus honeypots 35 shells lanzadas desde dos direcciones IP, en Apache mod_php con PHP 8.4.26, mediante una cadena HTTP de cuatro fases que coincidía con una PoC pública. Las pruebas incluían un volcado de memoria de 800 KiB, que llevó a Karimi a concluir “RCE confirmada con divulgación de memoria aprovechable”. El hallazgo fue validado de forma independiente por Marcus Hutchins (Expel), que lo calificó como “con diferencia, la confirmación de explotación en entornos reales de mayor calidad hasta la fecha”. No obstante, Karimi subrayó que la prueba se realizó en un perfil mod_php de un solo worker, intencionadamente favorable, y que no mide la fiabilidad con otro número de workers, otras compilaciones u otras aplicaciones.

El 26 de octubre, CISA añadió ambos CVE a su catálogo Known Exploited Vulnerabilities (KEV), con un plazo de corrección hasta el 29 de octubre para las agencias federales de EE. UU. Por otra parte, CYFIRMA informó, con un nivel de confianza moderado, de una campaña de escaneo y sondeo atribuida al ecosistema Lazarus, dirigida contra 216 hosts PHP sin parchear o con mitigación parcial, actividad de sondeo, no explotación confirmada.

La parte técnica: identificar y corregir los sistemas vulnerables
1. Inventariar todos los lugares donde se ejecuta PHP
  • Revise la CMDB, los escáneres de vulnerabilidades, las configuraciones de los servidores, los repositorios y las imágenes de contenedor.

  • Incluya las máquinas virtuales, App Service, Kubernetes, los contenedores, los entornos de preproducción/prueba, las aplicaciones locales (on-premises) y los productos/appliances de terceros que integran PHP.

  • Dé prioridad a los sistemas expuestos a Internet, especialmente los que ejecutan Apache mod_php, así como a las aplicaciones que aceptan subidas de archivos.

  • Utilice el encabezado X-Powered-By o el fingerprinting externo solo como indicios: no confirman la versión real del entorno de ejecución.

2. Comprobar la versión que sirve el tráfico web

No se fíe solo de la versión del CLI. La versión que muestra php -v puede diferir de la de PHP-FPM o de la del módulo de Apache. Compruébelas por separado:

En el caso de los paquetes suministrados por las distribuciones de Linux, compruebe si existe un backport del parche. Un número de versión aparentemente más antiguo no significa automáticamente que el paquete sea vulnerable; consulte el registro de cambios (changelog) de la distribución.

3. Determinar el modo de ejecución (SAPI) - el riesgo varía

El riesgo no es el mismo en todas las instalaciones. La tabla resume lo que han confirmado los investigadores y lo que se desprende del análisis del código. Si mod_php está cargado y sirve aplicaciones públicas, el sistema entra en la categoría de riesgo muy alto.

4. Aplicar el parche y confirmar que se ejecuta el código actualizado

Actualice a la versión corregida de su rama. A continuación, reinicie o recargue los servicios PHP-FPM/Apache y los workers correspondientes, conforme a sus procedimientos operativos. Vuelva a comprobar la versión a través de la ruta que utiliza la aplicación web. Actualizar el paquete sin reiniciar los procesos puede hacer que los workers existentes sigan ejecutando el código vulnerable.

Para PHP 8.1 y versiones anteriores, compruebe si su distribuidor ofrece parches con backport documentados. Si no existe una corrección con soporte, planifique una migración. Reconstruya las imágenes de contenedor a partir de imágenes base actualizadas y vuelva a desplegarlas; actualizar el host no actualiza el PHP del interior del contenedor.

5. Comprobar las sobrescrituras de INI por solicitud (consumidor para CVE-2026-109619)

Las advertencias generadas al aplicar ajustes INI por directorio pueden actuar como “consumidor” en la cadena de CVE-2026-109619. Busque directivas php_value / php_flag / php_admin_* en .htaccess y en la configuración de Apache, así como PHP_VALUE / PHP_ADMIN_VALUE enviados por nginx a FPM. Ocultar los errores no le protege, porque se accede al estado global antes de que PHP decida si muestra el mensaje. Traslade la configuración a php.ini o al pool de FPM.

6. Mitigar temporalmente CVE-2026-115560

CVE-2026-115560 es un vector distinto, divulgado el 23 de octubre y aún sin parche a 27 de octubre — se espera que PHP publique el aviso completo, con las versiones afectadas y la puntuación CVSS, junto con la próxima versión, sin fecha anunciada. Según el aviso de PHP, el riesgo solo surge cuando se cumplen simultáneamente tres condiciones:

1.  session.serialize_handler es php_binary o php_serialize;

2.  la aplicación cambia el gestor a php mediante ini_set() antes de session_start(); y

3.  session.upload_progress.enabled permanece habilitado.

Las aplicaciones que no cambian el gestor de sesión en tiempo de ejecución no están expuestas a través de este vector concreto. Medida temporal: establezca session.upload_progress.enabled=0 en php.ini o .user.ini, o mediante la configuración del pool de PHP-FPM. Pruebe el efecto sobre la funcionalidad de subida de archivos y, a continuación, recargue los servicios y confirme el valor efectivo. Esta medida no sustituye a los parches para CVE-2026-109618 y CVE-2026-109619.

7. Controles compensatorios y sus límites

Si no puede aplicar el parche de inmediato, considere aislar temporalmente el sistema expuesto y aplicar controles que reduzcan el tráfico multipart. Cualquier cambio debe aprobarse, probarse y supervisarse. Las reglas WAF pueden reducir algunos intentos, pero no corrigen el entorno de ejecución y tienen una eficacia limitada frente a solicitudes formalmente válidas.

No considere lo siguiente como una solución:

  • ocultar los errores (display_errors=Off, error_reporting, log_errors=Off o el operador @)- el ataque se produce antes de que se ejecute el código de la aplicación;

  • un modo de mantenimiento del CMS;

  • las reglas WAF basadas en firmas de payload (las solicitudes maliciosas son formalmente válidas).

La ausencia de errores en los registros no demuestra que el sistema no haya sido objetivo de ataques. No pruebe los sistemas de producción con PoC públicas: muchas no son fiables, algunas pueden contener código inseguro y un resultado negativo no demuestra que el servidor no sea vulnerable.

Detección y respuesta

Además de aplicar los parches, el SOC recomienda una revisión retroactiva de los sistemas expuestos al menos desde el 17 de octubre de 2026, siempre que exista telemetría. Correlacione los accesos sospechosos con la ejecución de procesos, los cambios en archivos, las conexiones salientes y los eventos de autenticación. La ausencia de telemetría o de alertas no demuestra que no se haya producido una explotación.

1. Telemetría de procesos / EDR

Genere una alerta ante cualquier proceso iniciado por php-fpm, php-cgi, httpd o apache2 que lance una shell o herramientas de descarga (sh, bash, dash, curl, wget, nc, python, perl). En funcionamiento normal, este comportamiento es poco frecuente y debe tratarse como un posible compromiso.

2. Registros web y de PHP

•   Ráfagas de solicitudes POST multipart/form-data desde el mismo origen, especialmente con un número inusual de partes o de encabezados.

•   Nombres de campo profundamente anidados o solicitudes que incluyen PHP_SESSION_UPLOAD_PROGRESS, también hacia endpoints que no deberían aceptar subidas de archivos.

•   Respuestas HTTP 500 repetidas, caídas o reinicios inesperados de los workers de PHP.

•   Cookies PHPSESSID malformadas o inusualmente largas y errores repetidos (SIGSEGV, AH00052, zend_mm_heap corrupted, "Allowed memory size … in Unknown on line 0") en los registros de PHP, Apache o FPM.

3. Sistema de archivos y persistencia

•   Archivos PHP nuevos o modificados en directorios de subida, de caché o accesibles desde la web; compruebe la marca de tiempo, el propietario y el contenido.

•   Nuevas tareas cron para el usuario del servidor web, claves SSH o cuentas añadidas recientemente; conexiones salientes inusuales iniciadas por los workers web.

4. Cómo utilizar los indicadores de compromiso (IOC)

Trate los IOC como puntos de partida para la correlación, no como prueba por sí solos: algunas direcciones pueden pertenecer a infraestructuras de anonimización o aparecer en tráfico legítimo. Una coincidencia no confirma un compromiso ni justifica un bloqueo automático. Valide el origen, la fecha y el contexto de cada indicador, contrastándolo con la telemetría de host/red.

Respuesta a incidentes: si hay indicios creíbles de compromiso

1.  Aísle el sistema afectado y limite el acceso a la red sin destruir las evidencias.

2.  Conserve los registros y, si es posible, una imagen del disco y los artefactos de memoria/procesos pertinentes.

3.  Rote todas las credenciales accesibles para el proceso web: contraseñas de bases de datos, claves de API, tokens y secretos de .env.

4.  Continúe la investigación en busca de persistencia, exfiltración y movimiento lateral. Actualizar PHP por sí solo no elimina el acceso de un atacante si el sistema ya estaba comprometido.

5.  Escale al equipo SOC/IR y evalúe las obligaciones de notificación aplicables (RGPD, NIS2).


Tablas de referencia

Versiones afectadas y corregidas

Comparativa de los dos CVE corregidos
Plan de acción recomendado

Fuentes y referencias


[1]  PHP Security Advisory — GHSA-w8hw-w9fx-j79w (CVE-2026-109618) — https://github.com/php/php-src/security/advisories/GHSA-w8hw-w9fx-j79w

[2]  PHP Security Advisory — GHSA-6wmf-4rv5-p3rp (CVE-2026-109619) — https://github.com/php/php-src/security/advisories/GHSA-6wmf-4rv5-p3rp

[3]  PHP official notice — Session upload progress (CVE-2026-115560), 23 de octubre — https://www.php.net/archive/2026.php#2026-10-23-1

[4]  Amazon Threat Intelligence — MadPot observations, 17–21 de octubre de 2026 — https://aws.amazon.com/blogs/security/amazon-threat-intelligence-identifies-php2shell-exploitation-prior-to-public-disclosure-in-madpot/

[5]  Cloudflare — PHP2Shell: WAF mitigations and their limits — https://blog.cloudflare.com/php-vulnerabilities-waf-protection/

[6]  CISA — Critical Vulnerabilities in PHP Require Immediate Patching — https://content.govdelivery.com/accounts/USDHSCISA/bulletins/42ff5ac

[7]  VulnCheck — exploit research update, 23 de octubre de 2026 — https://www.vulncheck.com/blog/php2shell-vulnerabilities

[8]  Wiz Research — PHP2Shell technical disclosure (RCE en contenedores CMS) — https://www.wiz.io/blog/php2shell-php-rce

[9]  Censys — PHP2Shell services (datos dinámicos, orientativos) — https://php2shell.censys.com/

[10]       Red Hat — RHSB-2026-013 (paquetes/distribuciones) — https://access.redhat.com/security/vulnerabilities/RHSB-2026-013

[11]       AWS Security Blog — WAF mitigating controls, 21 de octubre de 2026 — https://aws.amazon.com/blogs/security/using-aws-waf-to-apply-mitigations-for-php2shell-rce-vulnerabilities-cve-2026-109618-and-cve-2026-109619/

[12]       Recorded Future News — exploitation attempts and corrections (incl. la revisión de Sophos) — https://therecord.media/php-php2shell-exploitation-attempts-pocs

[13]       Unit 42 / Palo Alto Networks — PHP2Shell Threat Brief (actualizado, retirada de la asociación) — https://unit42.paloaltonetworks.com/cve-2026-109618-cve-2026-109619/

[14]       SecurityWeek — PHP2Shell Exploitation Moves From Probes to Working Shells (35 shells en un honeypot) — https://www.securityweek.com/php2shell-exploitation-moves-from-probes-to-working-shells/

[15]       securityonline.info — PHP2Shell added to CISA KEV; probing campaign attributed to Lazarus (CYFIRMA) — https://securityonline.info/php2shell-cisa-kev-confirmed-rce-dprk/

[16]       The Hacker News — Wordfence IOC lists and the Potassium botnet (fuente secundaria) — https://thehackernews.com/2026/10/php2shell-exploit-attempts-hit-millions.html

[17]       SOCRadar — exploitation report / observed infrastructure — https://socradar.io/blog/php2shell-cve-2026-109618-cve-2026-109619/

[18]       W3Techs — Usage statistics and market share of PHP (estadística a 21 de octubre de 2026) — https://w3techs.com/technologies/details/pl-php

BleepingComputer — PHP2Shell security flaws now successfully exploited in the wild (RCE en honeypot, 26 de octubre) — https://www.bleepingcomputer.com/news/security/php2shell-security-flaws-now-sucessfully-exploited-in-the-wild/

Cloud image

30 días de ciberdefensa de nivel empresarial

Dé el paso hacia el futuro de la ciberseguridad con acceso completo a una plataforma unificada e inteligente — gratis durante 30 días. Potencie a su equipo de seguridad con:

  • SIEM avanzado para visibilidad en tiempo real, alertas inteligentes y análisis forense profundo en entornos en la nube, locales e híbridos

  • Gestión continua de vulnerabilidades para identificar, priorizar y remediar riesgos en todos los activos

  • Inteligencia sobre ciberamenazas en vivo integrada directamente en sus flujos de trabajo, con información global y perfiles de atacantes

  • Detección de amenazas impulsada por IA que aprende de su entorno, explica las alertas en lenguaje claro y sugiere los siguientes pasos

  • Preparación integrada para el cumplimiento de NIS2, RGPD, ISO 27001 y más, con informes automatizados y herramientas de auditoría

Tanto si gestiona un SOC reducido como un equipo de seguridad empresarial a gran escala, esta plataforma le ofrece las herramientas para detectar más rápido, responder con más inteligencia y anticiparse a las amenazas en evolución, sin complicaciones.

Disfrute de protección de nivel empresarial, flujos de trabajo optimizados y control total.

Su ventaja de 30 días comienza ahora.

Desbloquee su prueba gratuita de 30 días