← Inicio

PHP2Shell: vulnerabilidad crítica que amenaza el 69% de los sitios web del mundo

PHP2Shell: la mayor amenaza a la web en décadas

En la mañana del 21 de octubre de 2026, la comunidad de seguridad cibernética enfrentó lo que puede ser la vulnerabilidad más significativa del PHP desde el Log4Shell. Dos fallos de ejecución remota de código (CVE-2026-109618 y CVE-2026-109619), apodados "PHP2Shell" por investigadores independientes, recibieron una puntuación CVSS de 9.2 de 10 — y, según algunas evaluaciones, un puntaje máximo de 10.0 — y pueden afectar todas las versiones de PHP desde la 5.4, lo que representa aproximadamente el 69,3% de los sitios web cuyo idioma del servidor es conocido, según datos del W3Techs. El parche oficial estaba programado para las 14:00 UTC del mismo día.

Qué sucedió

En la noche del 20 de octubre, identificadores CVE e información preliminar sobre los dos fallos circularon en Hacker News y en redes sociales. La PHP Foundation, ese mismo día, publicó un aviso de que liberaría parches el 21 de octubre a las 14:00 UTC, con la advertencia de que la actualización podría anticiparse si los detalles técnicos se hicieran públicos o se confirmaran evidencias de explotación en ambiente real.

Los dos fallos, rastreados como CVE-2026-109618 y CVE-2026-109619, permiten ejecución remota de código sin autenticación. La CERT-EU publicó el aviso 2026-018, nombrando ambas CVEs y clasificándolas como de explotación sin credenciales. La información fue inicialmente mantenida bajo embargo para el 22 de octubre, pero la exposición prematura aceleró el cronograma.

¿Por qué el nombre PHP2Shell?

La denominación "PHP2Shell" se cunó por medio de informes independientes de investigadores de seguridad, incluyendo trabajo del investigador LCFR y de la Calif.io, con demostración de cadena de explotación divulgada por Kirill Firsov. El nombre deriva de la capacidad de el exploit de obtener un shell en el servidor vulnerable, permitiendo al atacante ejecutar comandos arbitrarios — el mismo tipo de acceso que típicamente resulta de la invasión más exitosa de un servidor web.

Informes públicos sugieren que el CVE-2026-109618 involucra un bug de uso después de liberación (use-after-free) en el mecanismo de deserialización de variables del PHP. El código vulnerable reside en el handler `session.upload_progress`, componente habilitado por defecto en todas las instalaciones de PHP, lo que significa que no es necesario que la aplicación víctima active ninguna configuración especial para estar expuesta.

El análisis técnico del investigador Qi Deng, publicado en el repositorio público `ikow/php2shell-poc`, detalla tres cadenas de explotación distintas:

- Cadena A: Inyección de sesión vía formulario multipart + LFI → RCE. Aprovecha que el `MULTIPART_EVENT_FORMDATA` acepta PHPSESSID del POST, ignorando `use_only_cookies`, y almacena el nombre de archivo bruto en la sesión sin validación. - Cadena B: Use-after-free en `var_destroy` → RCE. Un payload de `unserialize()` con 2.000+ entradas desborda el límite `VAR_ENTRIES_MAX`, moviendo objetos a la lista de dtor y disparando `__destruct` sin el `BG(serialize_lock)`. - Cadena C: Incompatibilidad de handler → `__destruct` → RCE. Servidores con directorios configurados con diferentes `session.serialize_handler` entre peticiones pueden sufrir mismatch del handler.

Las tres cadenas verificadas en PHP 8.2.34 y 8.5.x en pruebas ASAN.

¿Qué versión exactamente está afectada?

La lista oficial de versiones corregidas sería divulgada junto con el parche, pero el investigador Kevin Beaumont ya reportó las versiones esperadas:

- 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

Lo que no será corregido: todas las versiones de PHP 5.x hasta 8.1.x están en fin de vida y no recibirán parches. Esto representa un problema particular, pues muchas infraestructuras legadas — especialmente sistemas gubernamentales, hospitales y proveedores de alojamiento compartido — aún corren PHP 7.4 o 5.6.

La PHP core developer Gina Peter Banyard dejó claro: "la única mitigación es patching/upgrading del PHP". El release manager Joe Ferguson confirmó que configuraciones de `ini` no resuelven el problema: "ini settings won't save you".

El impacto potencial

Con más de 1,3 millones de hosts expuestos a internet estimando el investigador Silas Cutler, el alcance es comparable al Apache Log4j de 2021. Plataformas como WordPress, Drupal, Joomla, Laravel y Magento corren sobre PHP y estarían directamente en la mira. El problema se agrava aún más por el hecho de que, según la PHP Foundation, no existe configuración de mitigación parcial — la única solución confiable es actualizar.

La Cloudflare, que opera como CDN para millones de sitios PHP, ya implantó reglas de WAF provisionales. El CTO Dane Knecht confirmó que la empresa está "viendo ataques iniciales emergiendo" y actualizando mitigaciones a medida que nuevos vectores aparecen.

Qué esperar en las próximas horas

Según la Sansec, la explotación en masa debe comenzar en hasta 15 minutos después de la liberación del parche — un fenómeno ya observado en vulnerabilidades como el Log4Shell y el SpoolerForever. La CISA tiene un historial de inclusión de vulnerabilidades de PHP en su Known Exploited Vulnerabilities catalog: dos fallos previos del PHP fueron incluidos tras ser utilizados en campañas de ransomware.

La pregunta: en un ecosistema donde casi el 70% de los sitios corren PHP y donde la mitad de las versiones afectadas no recibirán corrección, ¿cuántos servidores van a dejar de responder en las próximas 48 horas?

Fuentes: The Verge, WIRED, Tenable

✓ Fuentes independientes cruzadas y verificadas antes de la publicación