Información actualizada al 21 de octubre de 2026. Iremos revisando las recomendaciones a medida que los proveedores publiquen más información.
Si todavía no sabes qué es PHP2Shell, empieza por nuestro artículo PHP2Shell: la vulnerabilidad crítica que afecta a casi todos los servidores PHP. Aquí vamos directo a lo práctico: qué hacer para proteger tu servidor con las soluciones disponibles hasta el momento.
1. La solución real: actualizar PHP
El equipo de PHP publicó el 21 de octubre las versiones que corrigen las dos vulnerabilidades (CVE-2026-109618 y CVE-2026-109619):
- PHP 8.5.12
- PHP 8.4.27
- PHP 8.3.36
- PHP 8.2.35
Si usas cualquiera de esas ramas, actualiza a la versión indicada o superior. Es la única medida que corrige el problema de raíz; todo lo demás de esta guía son parches temporales.
2. Cómo actualizar según tu servidor
Ubuntu / Debian:
sudo apt update && sudo apt upgradeLas distribuciones recibieron los parches por adelantado. Ten en cuenta que muchas aplican la corrección sin cambiar el número de versión (backport), así que php -v puede seguir mostrando, por ejemplo, 8.1.x aunque ya esté corregido. Para confirmarlo, revisa el changelog del paquete y busca los CVE:
apt changelog php8.3-fpm | grep -i "CVE-2026-10961"Si usas el repositorio de Ondřej Surý (ppa:ondrej/php), actualiza igual con apt cuando publique los nuevos paquetes.
AlmaLinux / Rocky / RHEL:
sudo dnf update "php*"cPanel/WHM (EasyApache 4): las versiones de PHP llegan como paquetes ea-php*. Actualízalas con:
dnf update "ea-php*" # o yum en sistemas antiguosSi usas CloudLinux con PHP Selector, actualiza también los paquetes alt-php*.
Docker: reconstruye tus imágenes con la etiqueta oficial más reciente (docker pull php:8.3-fpm y vuelve a construir). Una imagen ya construida no se actualiza sola.
Hosting compartido: no puedes actualizar PHP tú mismo; depende de tu proveedor. Escríbele para confirmar que ya aplicó el parche y, mientras tanto, usa el selector de PHP de tu panel para pasar a una rama con soporte (8.2 o superior).
Muy importante: después de actualizar, reinicia PHP-FPM o Apache (por ejemplo, sudo systemctl restart php8.3-fpm o sudo systemctl restart apache2). Mientras los procesos viejos sigan corriendo, el servidor sigue siendo vulnerable.
3. Si usas PHP 8.1, 8.0 o 7.x
Estas ramas ya no tienen soporte oficial y no habrá versiones corregidas. El equipo de PHP publicó parches mínimos en código fuente para 7.4, 8.0 y 8.1, pero solo sirven si compilas PHP tú mismo. Tus opciones, de mejor a peor:
- Migrar a PHP 8.2 o superior (la recomendación de fondo; tarde o temprano habrá que hacerlo).
- Usar los paquetes de tu distribución o de tu proveedor si incluyen la corrección por backport.
- Aplicar las mitigaciones del punto siguiente y, si el sistema es crítico, sacarlo de internet o ponerlo detrás de una VPN hasta que se pueda migrar.
4. Mitigaciones temporales si no puedes actualizar ya
Estas medidas reducen el riesgo pero no lo eliminan: cada una corta solo una parte del ataque. Úsalas únicamente mientras actualizas.
- Desactiva el progreso de subida de sesiones (es la mitigación más recomendada y casi ninguna aplicación lo usa). En tu
php.ini:session.upload_progress.enabled = 0 - Solo en PHP 8.5, desactiva los backtraces de errores fatales:
fatal_error_backtraces = 0 - Limita el tamaño de las peticiones con valores conservadores (por ejemplo
post_max_size = 8Mo32M) y aplica también el límite en el servidor web o proxy (client_max_body_sizeen Nginx,LimitRequestBodyen Apache). - En PHP-FPM, puedes forzar que cada proceso atienda una sola petición, lo que corta la parte del ataque que depende de reutilizar el mismo proceso:
Tiene un costo de rendimiento notable, así que evalúalo en sitios con mucho tráfico.pm.max_requests = 1 memory_limit = -1: algunos investigadores la mencionan como mitigación para CVE-2026-109618, pero elimina el límite de memoria de PHP y un solo script puede tumbar el servidor. Si la aplicas, combínala sí o sí con límites de memoria a nivel de contenedor o cgroup.
Después de cualquier cambio en php.ini o en el pool de FPM, reinicia el servicio y verifica con phpinfo() que el valor nuevo esté aplicado.
5. Activa un WAF
Cloudflare publicó reglas de WAF para los vectores de ataque conocidos y las activó para todos sus clientes, incluido el plan gratuito. Si tu dominio ya pasa por Cloudflare (con el proxy activado, la “nube naranja”), tienes una capa extra de protección. No reemplaza la actualización —puede haber variantes que las reglas no detecten—, pero ayuda mucho mientras tanto.
6. Revisa si ya te atacaron
Todavía no hay indicadores de compromiso confirmados, pero estas son las señales que recomiendan vigilar los equipos de seguridad:
- Procesos extraños lanzados por PHP:
php-fpm,apache2ohttpdejecutandosh,bash,curl,wget,pythonoperl. Puedes revisarlo conps -ef --forest. - Peticiones multipart inusuales seguidas de errores de memoria (Allowed memory size exhausted) en los logs.
- Cookies
PHPSESSIDanormalmente grandes o malformadas. - Reinicios inexplicables de procesos de PHP (segfaults en el log de FPM o de Apache).
- Archivos PHP nuevos o modificados recientemente en carpetas de subidas o de caché.
Si encuentras algo sospechoso: aísla el servidor, cambia todas las credenciales (base de datos, SSH, panel, clave SOL) y, si usas facturación electrónica, considera revocar y renovar tu certificado digital. Restaurar desde un backup limpio suele ser más seguro que intentar “limpiar” un servidor comprometido.
Checklist rápido
- Haz un inventario de todos tus servidores, contenedores y sitios de prueba con PHP.
- Actualiza a PHP 8.5.12, 8.4.27, 8.3.36 o 8.2.35 (o al paquete corregido de tu distribución).
- Reinicia PHP-FPM / Apache.
- Si no puedes actualizar:
session.upload_progress.enabled = 0y límites de tamaño de petición. - Activa Cloudflare u otro WAF delante de tu sitio.
- Revisa procesos y logs en busca de señales de ataque.
- Planifica la migración de cualquier sistema en PHP 8.1 o anterior.
¿Necesitas ayuda?
En PeruSoftware administramos los servidores de nuestros planes de hosting y VPS y estamos aplicando las actualizaciones. Si tu servidor está en otro proveedor, tienes un sistema en una versión antigua de PHP o sospechas que te atacaron, escríbenos por contacto y te ayudamos con nuestro servicio de soporte Linux.
Preguntas frecuentes
¿Cómo me protejo de PHP2Shell?
Actualizando PHP a la versión 8.5.12, 8.4.27, 8.3.36 o 8.2.35 (o superior), o instalando el paquete corregido de tu distribución, y reiniciando PHP-FPM o Apache. Es la única solución definitiva.
¿Qué hago si no puedo actualizar PHP todavía?
Como medida temporal, desactiva session.upload_progress.enabled en php.ini, limita el tamaño de las peticiones, en PHP 8.5 pon fatal_error_backtraces en 0 y coloca tu sitio detrás de un WAF como Cloudflare. Estas medidas reducen el riesgo pero no lo eliminan.
¿Hay parche para PHP 7.4, 8.0 u 8.1?
No hay versiones oficiales corregidas. El equipo de PHP publicó parches mínimos en código fuente para quienes compilan PHP, y algunas distribuciones de Linux incluyen la corrección en sus paquetes. La recomendación es migrar a PHP 8.2 o superior.
¿Mi versión sigue diciendo 8.1 después de actualizar, estoy protegido?
Puede ser. Distribuciones como Ubuntu y Debian corrigen la falla sin cambiar el número de versión. Revisa el changelog del paquete y busca los códigos CVE-2026-109618 y CVE-2026-109619 para confirmarlo.
¿Cloudflare me protege de PHP2Shell?
Ayuda: Cloudflare activó reglas de WAF para los vectores de ataque conocidos en todos sus planes, incluido el gratuito, siempre que el proxy esté activado. Pero no reemplaza la actualización de PHP.