Guía Completa sobre la Vulnerabilidad PHP2Shell: Riesgos y Soluciones

Última actualización: noviembre 6, 2026
Autor: Isaac
  • Dos fallos críticos en el núcleo de PHP permiten la ejecución remota de código sin necesidad de claves.
  • Afecta a una enorme cantidad de servidores web, especialmente aquellos que utilizan Apache mod_php.
  • La única solución definitiva es actualizar el intérprete de PHP a las versiones oficiales corregidas.

Rack de servidores modernos con iluminación azul en un centro de datos, representando la infraestructura vulnerable a PHP2Shell.

Imagínate que alguien pudiera colarse en tu servidor y tomar el control total sin tener ni una sola contraseña. Pues eso es exactamente lo que permite PHP2Shell, un combo de vulnerabilidades que ha puesto patas arriba el mundo de la ciberseguridad. Al afectar al motor interno de PHP, un lenguaje que mueve casi el 70% de la web, el riesgo es masivo, ya que no importa si tienes el código de tu web impecable; el problema está en los cimientos mismos del sistema.

Este lío surgió por dos fallos específicos, los CVE-2026-109618 y CVE-2026-109619, que han sido calificados con una gravedad crítica de 9.2 sobre 10. Lo más preocupante es que los atacantes pueden lanzar órdenes directamente al sistema de archivos y a las bases de datos sin autenticación previa, lo que ha llevado a gobiernos de varios países europeos a tumbar sus webs preventivamente para evitar que les dejaran el servidor hecho un coladero.

¿En qué consiste exactamente el problema técnico?

Persona enmascarada manipulando cables de servidores, simbolizando el acceso no autorizado y la toma de control del servidor.

Para entenderlo sin romperse la cabeza, el primer fallo (CVE-2026-109618) ocurre cuando el servidor se queda sin memoria al procesar una petición. En ese momento, ocurre un manejo inadecuado de errores OOM (Out of Memory), dejando datos a medio inicializar que el sistema luego procesa como si fueran válidos, abriendo la puerta a ejecutar código malicioso.

Por otro lado, el CVE-2026-109619 se debe a que el estado global no se reinicia correctamente entre una solicitud y otra. Esto provoca que una petición nueva pueda leer restos de memoria de una solicitud anterior que ya debería haber sido borrada, facilitando la infiltración de comandos remotos. Es importante mencionar que existe un tercer problema, el CVE-2026-115560, que aunque es menos probable porque requiere una configuración muy rara de sesiones, también podría permitir la ejecución de código si no se desactiva el progreso de subida de archivos.

Sistemas y versiones en el punto de mira

Ingeniera de ciberseguridad monitoreando servidores con una laptop, representando la inspección de seguridad y mitigación de vulnerabilidades.

Básicamente, cualquier instalación que reciba peticiones HTTP está en riesgo. Esto incluye PHP-FPM, FrankenPHP, LiteSpeed y, sobre todo, Apache con mod_php, que es donde el ataque es más sencillo de ejecutar ya que ocurre antes incluso de que el código de tu aplicación llegue a arrancar.

Las versiones que deben actualizarse sí o sí son las ramas 8.2, 8.3, 8.4 y 8.5. Para estar a salvo, debes haber saltado a las versiones 8.2.35, 8.3.36, 8.4.27 o 8.5.12. Si todavía usas versiones antiguas como PHP 7.4, 8.0 u 8.1, tienes un problema extra: el proyecto oficial ya no las soporta, aunque algunos proveedores de distribuciones Linux han sacado parches específicos llamados backports para salvar los muebles.

Cómo saber si te han dado el hachazo

Persona con una máscara de Anonymous junto a servidores, ilustrando la amenaza de hacking y las vulnerabilidades críticas de sistema.

Si sospechas que tu servidor ha sido comprometido, no basta con mirar si la web carga. Tienes que revisar los logs en busca de errores de segmentación (SIGSEGV) o mensajes repetitivos de que la memoria se ha agotado (Allowed memory size exhausted). Otra señal clara es encontrar procesos de shell (bash o sh) lanzados por el usuario que corre el servidor web (como www-data o apache).

También es muy recomendable echar un ojo a los archivos del servidor buscando webshells o scripts PHP desconocidos que hayan aparecido recientemente. Si ves conexiones salientes extrañas hacia IPs que no conoces o nuevas tareas cron que tú no has programado, es muy probable que el atacante ya haya plantado una puerta trasera para volver cuando quiera.

Medidas urgentes y mitigaciones temporales

Profesional de IT en un centro de datos, representando la gestión experta y el blindaje de servidores frente a exploits.

La única solución real es actualizar y reiniciar los servicios. No sirve de nada instalar el paquete si no reinicias php-fpm o apache2, porque el binario vulnerable seguirá cargado en la RAM. En el caso de los contenedores, hay que reconstruir la imagen desde la base actualizada y desplegarla de nuevo.

Si por alguna razón no puedes actualizar ahora mismo, existen algunos parches temporales, aunque no son infalibles. Puedes probar a configurar memory_limit=-1 para evitar el fallo de memoria y establecer session.upload_progress.enabled=0 en el php.ini para bloquear una de las vías de entrada. No obstante, estas medidas son solo un parche rápido; la única forma de dormir tranquilo es instalar las versiones corregidas.

Acciones si el servidor ha sido vulnerado

Si confirmas que han entrado, actualizar el software ya no es suficiente porque el hacker probablemente ya tenga acceso. Lo primero es aislar el servidor de la red inmediatamente pero sin apagarlo, para no borrar las evidencias en la memoria RAM. Después, lo más sano es restaurar una copia de seguridad limpia de antes de octubre y cambiar todas las contraseñas de bases de datos y claves de API que estuvieran en el servidor.

Es vital no descargar pruebas de concepto (PoC) de GitHub para intentar reproducir el fallo, ya que muchas de estas herramientas están trucadas con malware para infectar a los administradores que intentan protegerse. La prioridad debe ser la limpieza total y el endurecimiento del sistema mediante el principio de mínimo privilegio para el proceso que ejecuta PHP.

La magnitud de PHP2Shell demuestra que la seguridad debe ser constante y que depender de versiones obsoletas es jugar a la ruleta rusa. Para blindar un servidor hoy en día, es imprescindible mantener el intérprete actualizado, monitorizar los procesos hijos del servidor web y actuar en cuestión de horas cuando sale una alerta crítica, ya que la inteligencia artificial está acelerando la creación de exploits y reduciendo el tiempo de respuesta de los defensores.