ActualidadDesarrollo Web#PHP#seguridad#PHP2Shell

PHP2Shell: qué pasó con la vulnerabilidad crítica de PHP y qué hacer ahora

Dos fallos de ejecución remota de código en el núcleo de PHP obligaron a una actualización de emergencia y a apagar servicios en todo el mundo. Esto es lo que pasó y cómo comprobar tu exposición.

CWEquipo Coderwebs7 min de lectura
En este artículo

Fuente principal: The PHP Foundation, «Today's PHP Security Release, and How We're Strengthening PHP Security», 21 de octubre de 2026. Para el detalle técnico, el análisis de Wiz Research y los advisories de GitHub.

El 21 de octubre de 2026, el proyecto PHP publicó una actualización de emergencia para dos vulnerabilidades críticas que permiten ejecutar código de forma remota sin autenticación. Al día siguiente, la historia estaba en medios generalistas de todo el mundo, con gobiernos revisando servicios públicos, empresas apagando partes de su infraestructura y equipos de seguridad buscando servidores sin actualizar.

El nombre que se popularizó es PHP2Shell. No es un problema de WordPress, de un plugin ni de un tema: está en el núcleo del intérprete de PHP. Eso es lo que lo hace distinto y lo que obliga a mirar la versión del servidor, no solo la del CMS.

Qué pasó, en orden

  • 20 de octubre: los identificadores CVE-2026-109618 y CVE-2026-109619 empezaron a circular en foros y redes antes del anuncio coordinado. PHP adelantó la preanuncio y movió la release un día.
  • 21 de octubre, 14:00 UTC: PHP publicó las versiones 8.5.12, 8.4.27, 8.3.36 y 8.2.35 con la corrección.
  • 21 y 22 de octubre: CISA, CERT-EU y el NCSC británico emitieron alertas. Wiz publicó su análisis técnico, OpenAI y Calif explicaron su parte en la investigación, y medios como BBC y The Guardian reportaron servicios caídos y millones de intentos de explotación.
  • 22 de octubre: la noticia llegó a portadas generalistas. Wikipedia retiró partes de su web como precaución y varios gobiernos europeos suspendieron servicios públicos, según BBC.

La situación siguió cambiando después de la publicación. CISA no había observado explotación al momento de emitir su alerta, pero The Guardian reportó millones de intentos de explotación y ya circulaban pruebas de concepto públicas. En un incidente así, la ventana entre “hay parche” y “hay explotación” puede medirse en horas.

Qué son exactamente las dos vulnerabilidades

Ambas fueron calificadas con CVSS 9.2 por el equipo de seguridad de PHP. Las dos son fallos de seguridad de memoria en el motor de PHP, relacionados con cómo se manejan los errores fatales y las situaciones de falta de memoria.

CVE Nombre técnico Qué permite
CVE-2026-109618 RCE via OOM corruption Corromper memoria y ejecutar código; también disclosure de memoria del proceso
CVE-2026-109619 RCE via stale global state Reutilizar estado global que apunta a memoria liberada y ejecutar código en una petición posterior

El detalle que importa para una empresa no es la mecánica interna, sino el alcance:

  • No requiere autenticación. En Apache con mod_php, el fallo de CVE-2026-109618 puede dispararse antes de que se ejecute el código de la aplicación. En PHP-FPM también se confirmó ejecución remota a través de rutas de aplicación.
  • No depende de WordPress, Drupal o Joomla. Wiz demostró explotación en esos tres, pero también advirtió que una aplicación “Hello World” sobre una versión vulnerable puede estar expuesta. El fallo está por debajo de la aplicación.
  • Puede filtrar memoria. Además de ejecutar código, una de las variantes permite leer memoria del proceso, que puede contener contraseñas, tokens, claves de API y certificados de otras peticiones.
  • Afecta a versiones antiguas. Wiz afirma que todas las versiones publicadas en la última década, desde PHP 5.4, están afectadas por al menos una de las dos. PHP solo mantiene parches para 8.2, 8.3, 8.4 y 8.5; PHP 8.1 y anteriores no recibieron corrección oficial.

Wiz estima que PHP impulsa alrededor del 70% de los sitios web. Es una estimación de la industria, no un censo, pero explica por qué una vulnerabilidad en el intérprete se convierte en un problema de infraestructura global.

Por qué esta vez es distinto

Cada cierto tiempo aparece una vulnerabilidad que cambia la conversación: Heartbleed en OpenSSL, Log4Shell en Java. PHP2Shell tiene un componente similar: el fallo está en una capa que casi todos dan por sentada.

La diferencia es que esta vez la investigación se apoyó en modelos de IA para encontrar y encadenar fallos que llevaban más de una década en el código. La PHP Foundation lo describe como un punto de inflexión: las herramientas permiten descubrir errores más rápido, tanto a defensores como a atacantes. Eso no significa que “la IA haya roto PHP”; significa que la economía de encontrar y explotar fallos complejos cambió.

Para un equipo pequeño, la lección práctica es incómoda: la seguridad del runtime no se delega al CMS. WordPress puede estar actualizado y el servidor seguir ejecutando una versión vulnerable de PHP.

Qué hacer ahora

1. Inventariar todo lo que corre PHP

No alcanza con revisar el sitio principal. PHP suele estar escondido en:

  • el hosting del sitio corporativo y de la tienda;
  • imágenes Docker y contenedores;
  • aplicaciones internas y paneles legacy;
  • funciones serverless o servicios gestionados;
  • plugins o herramientas que traen su propio runtime.

CISA recomienda identificar y inventariar cualquier sistema que ejecute PHP, porque muchas veces no es visible desde fuera.

2. Actualizar a una versión corregida

Las versiones parcheadas son 8.5.12, 8.4.27, 8.3.36 y 8.2.35. Si el hosting es gestionado, abrí un ticket y pedí confirmación por escrito de la versión de PHP y de la fecha de aplicación. Si administrás el servidor, actualizá el paquete y reiniciá PHP-FPM o el servidor web según corresponda.

Si estás en PHP 8.1 o anterior, no hay parche oficial. La única salida es migrar a una versión soportada. Mantener una versión sin soporte después de una divulgación como esta no es una decisión técnica: es una exposición abierta.

3. Si no podés actualizar hoy

CISA recomienda sacar de línea los sistemas PHP expuestos hasta poder parchearlos. Si eso no es viable:

  • aislá el servicio con reglas de red y limitá el acceso;
  • aplicá reglas de WAF como mitigación temporal;
  • monitorizá de forma intensiva;
  • planificá la actualización con una fecha concreta.

El WAF reduce la exposición, pero no elimina la vulnerabilidad. No lo trates como la solución final.

4. Comprobar la versión en WordPress

La versión de PHP no está en el panel de WordPress; está en el servidor. Estas son las formas más rápidas de verificarla:

php -v

Si tenés WP-CLI:

wp --info

En el panel de WordPress, andá a Herramientas → Salud del sitio → Información → Servidor y buscá la versión de PHP. En un hosting gestionado, la encontrás en hPanel, cPanel o en la sección de configuración de PHP.

Si usás Docker:

docker exec -it <nombre-del-contenedor> php -v

Ocultar la versión de PHP en las respuestas HTTP no es una mitigación. No cambia el código que se ejecuta.

5. Buscar señales de compromiso

Los fallos ocurren por debajo de la aplicación, así que los logs del CMS pueden tener poco contexto. Wiz recomienda revisar:

  • peticiones multipart inusuales seguidas de errores de memory_limit o respuestas 500 repetidas;
  • cookies PHPSESSID inesperadamente grandes o malformadas;
  • caídas y reinicios anómalos de workers de PHP;
  • procesos de PHP lanzando shells o descargando herramientas;
  • actividad extraña en logs de Apache, PHP-FPM, LiteSpeed o el proxy.

Si hay indicios de explotación, no borres logs. Aislá el sistema, preservá evidencia y rotá credenciales, tokens y claves que hayan estado en ese servidor.

6. Revisar la cadena completa

Después de parchear, revisá:

  • usuarios administradores y tareas programadas que no reconozcas;
  • archivos modificados en WordPress, plugins, temas y directorios de subida;
  • conexiones salientes y cuentas de servicio;
  • claves de API, contraseñas y certificados que puedan haber estado en memoria.

La corrección del intérprete cierra la puerta de entrada, pero no revierte un acceso que ya ocurrió.

Qué no hacer

  • No asumas que actualizar WordPress actualiza PHP. Son capas distintas.
  • No confíes solo en el WAF. Es una mitigación temporal, no un parche.
  • No instales pruebas de concepto de fuentes desconocidas. Los PoC públicos también pueden ser una vía de infección.
  • No sigas en PHP 8.1 o anterior esperando que el hosting lo resuelva solo.
  • No borres logs ni reconstruyas el servidor antes de preservar evidencia si sospechás compromiso.

Cómo citar este artículo

Si vas a usar este análisis en un informe interno, una newsletter o un artículo, podés citarlo así:

Coderwebs. «PHP2Shell: qué pasó con la vulnerabilidad crítica de PHP y qué hacer ahora». 23 de octubre de 2026. https://coderwebs.com/blog/php2shell-php-vulnerability/

Las fuentes primarias y técnicas están listadas al final. Si tu equipo necesita ayuda para inventariar versiones, revisar WordPress o priorizar la actualización, podés hablar con nosotros o ver cómo trabajamos el mantenimiento WordPress.

Conclusión

PHP2Shell no es una historia sobre un plugin desactualizado. Es una historia sobre una capa de infraestructura que sostiene una parte enorme de la web y que muchas empresas no revisan hasta que hay una emergencia. La respuesta correcta tiene tres pasos: parchear primero, investigar después y monitorizar de forma sostenida.

Si tu sitio corre WordPress, la pregunta no es “¿tengo la última versión de WordPress?”. La pregunta es “¿qué versión de PHP está ejecutando el servidor y quién la actualiza?”.

#PHP#seguridad#PHP2Shell#WordPress
Compartir
CW

Sobre el autor

Equipo Coderwebs

Ingeniería web, IA y SEO

Escribimos desde la práctica: proyectos de desarrollo web, software a medida, automatizaciones, IA y SEO. Sin humo y con las decisiones explicadas.

Preguntas frecuentes

¿Mi WordPress está afectado?

Depende de la versión de PHP que ejecute el servidor, no de la versión de WordPress. Si el hosting usa PHP 8.2.35, 8.3.36, 8.4.27 o 8.5.12 (o una versión superior), estas dos CVEs están corregidas. Si usa PHP 8.1 o anterior, no hay parche oficial y hay que migrar a una versión soportada.

¿Actualizar WordPress soluciona la vulnerabilidad?

No por sí solo. PHP es el intérprete del servidor; WordPress es la aplicación que corre encima. Actualizar WordPress no cambia la versión de PHP. Hay que actualizar el runtime en el hosting, la imagen Docker o el servidor.

¿Basta con un WAF?

No. CISA lo menciona como mitigación temporal para sistemas que no se pueden actualizar, pero la única corrección completa es aplicar la versión parcheada. Un WAF reduce exposición; no elimina la vulnerabilidad.

¿Qué hago si no puedo actualizar hoy?

CISA recomienda sacar de línea los sistemas PHP expuestos hasta poder parchearlos. Si no es viable, aislar el servicio, aplicar reglas de WAF, limitar el acceso y monitorizar señales de explotación. Es una medida de emergencia, no una solución.

Fuentes

Sigue leyendo

Artículos relacionados

Solicitar diagnóstico

Empecemos por entender qué te frena.

Una conversación de 30 minutos, sin presentación corporativa. Salimos con una hipótesis clara y un siguiente paso concreto.

Aceptando proyectos para el próximo trimestre
Argentina · Trabajo en remoto

Respuesta en menos de 24 h laborables · Sin compromiso