Aviso de seguridad crítico: PHP2Shell · CVSS 4.0 9.2Fuentes revisadas: 22 de octubre de 2026

Comprobador PHP2Shell

Compare el PHP web, elija el despliegue y verifique cada cambio. Gratis, sin credenciales del servidor.

1. Su versión de PHP

Comparación local con los avisos de PHP2Shell; no se realiza ningún escaneo de red. Usa la versión de la SAPI web: PHP CLI puede cargar otro binario u otro archivo INI.

No sé mi versión de PHP

WordPress → Herramientas → Salud del sitio → Información → Servidor: copie la versión completa de PHP; pida la revisión del paquete al proveedor.

WordPress · Docs

Use diagnósticos autenticados; no deje phpinfo público. Introduzca arriba la versión completa.

Pruebas de aplicación (opcional): WordPress / WooCommerce · PHP 8.3.x

Versiones oficiales corregidas: 8.2.35 / 8.3.36 / 8.4.27 / 8.5.12

Ejemplo de rama; introduzca la versión exacta para evaluar los parches.

Elegir despliegue

2. Elegir una respuesta aplicable

Su acceso / Despliegue web

Elija acceso y despliegue antes de generar configuración.

3. Verificar la respuesta

Registre observaciones tras los cambios. No se ejecuta nada automáticamente; los registros solo permanecen en esta sesión de página.

Elija un despliegue y plantilla compatibles para ver los pasos.

  1. 1. Antes del cambio

    Registre versiones de paquete/imagen y configuración; prepare copia probada y recuperación. Volver a una versión vulnerable no completa la reparación.

  2. 2. Aplicar y reemplazar procesos

    Instale ambos parches. Compruebe sintaxis, reemplazo de todos los procesos/réplicas y tráfico sano. Una prueba TCP no basta.

  3. 3. Comprobar PHP web

    Use solo diagnósticos web autenticados existentes. Compare versión web con la matriz o aviso verificado del proveedor; revise cada origen/réplica y retire diagnósticos temporales.

  4. 4. Probar la aplicación

    Pruebe acceso, cargas y progreso. Compare tráfico normal y nuevos errores en registros antes y después.

    WordPress: medios, acceso y pago WooCommerce si se usa.

Comprobación en vivo de cabeceras HTTP públicas y versión PHP

Consulta la respuesta anónima de una página de inicio pública. Esta función opcional se ejecuta desde nuestro servicio; el evaluador de versiones de abajo sigue siendo local. No necesita acceso al servidor ni credenciales.

Solo inicio mediante HTTP/HTTPS y puertos predeterminados. Sin rutas, consultas, IP ni credenciales. No sigue redirecciones. El límite total es de cinco segundos.

PHP2Shell (CVE-2026-109618 y CVE-2026-109619) engloba fallos críticos de ejecución remota de código en el ciclo de procesamiento de peticiones de PHP. La limpieza tras un agotamiento de memoria y el estado residual entre peticiones pueden exponer los procesos web. multipart/form-data y session.upload_progress intervienen en algunas vías, pero no explican toda la causa. No hace falta que exista un formulario de carga en todas las instalaciones afectadas. La posibilidad de explotación depende de la SAPI, la aplicación, las extensiones y la configuración. Usa esta herramienta de PHP2Shell para evaluar la versión que realmente atiende tráfico y preparar controles por capas en php.ini, Nginx, Apache, Docker y Cloudflare WAF. La autenticación y las comprobaciones CSRF de la aplicación no sustituyen los parches del entorno de ejecución.

PHP2Shell: hechos esenciales para responder

Vulnerabilidades
PHP2Shell se refiere a CVE-2026-109618 y CVE-2026-109619. El proyecto PHP las clasifica como críticas, con CVSS 4.0 9.2.
Causa
Corrupción durante la limpieza por falta de memoria y estado global residual entre peticiones. session.upload_progress es una vía relevante; filtrar únicamente PHP_SESSION_UPLOAD_PROGRESS no cubre ambas CVE.
Versiones corregidas
Los parches oficiales están en PHP 8.2.35+, 8.3.36+, 8.4.27+ y 8.5.12+. PHP 8.1 y anteriores requieren migración o una adaptación de seguridad verificada del proveedor.
Contención inmediata
session.upload_progress.enabled = Off y las opciones de FastCGI reducen parte de la exposición. La solución completa de PHP2Shell exige los dos parches y sustituir todos los procesos antiguos de PHP.
Compatibilidad
Las cargas normales mediante $_FILES en WordPress, Laravel, Drupal, Symfony y Magento son independientes del progreso de sesión. El código propio y los complementos que consultan ese progreso sí pueden depender de él: prueba los flujos reales.

auditoría CLI de PHP2Shell y análisis forense de registros

Ejecuta diagnósticos locales de lectura para revisar la configuración y buscar anomalías. Comprueba los permisos necesarios y conserva las evidencias antes de modificar un sistema potencialmente comprometido.

La configuración de CLI puede diferir de la SAPI web. Los registros de acceso habituales no contienen cuerpos de petición ni cookies. Este grep solo busca archivos sin comprimir. Una coincidencia puede ser legítima y su ausencia no demuestra seguridad. Revisa también registros rotados y otras fuentes de monitorización.

Comprobación CLI de la configuración de PHP2Shell

Muestra la versión activa de PHP CLI y el estado de session.upload_progress.enabled. Contrasta por separado la configuración de la SAPI web. Un valor desactivado no acredita la corrección completa de PHP2Shell ni descarta una intrusión anterior.

php -r 'echo "PHP Version: ".PHP_VERSION."
Upload Progress: ".(ini_get("session.upload_progress.enabled") ? "ENABLED (review web SAPI)" : "DISABLED (not a safety verdict)")."
";'

Buscar indicios de PHP2Shell en los registros

Busca PHP_SESSION_UPLOAD_PROGRESS y fallos SIGSEGV de PHP-FPM en registros HTTP y de errores sin comprimir. Confirma qué datos se recopilan y amplía el análisis a registros rotados, procesos y conexiones salientes.

sudo grep -rnE "PHP_SESSION_UPLOAD_PROGRESS|SIGSEGV.*php-fpm" /var/log/nginx/ /var/log/apache2/ /var/log/php* 2>/dev/null

PHP2Shell: auditoría de WordPress y reglas IDS

Combina WP-CLI y heurísticas locales de Suricata/YARA con los avisos del proveedor. No escanean un servidor remoto ni certifican que todos los métodos de explotación de PHP2Shell estén bloqueados.

PHP2Shell: integridad de WordPress con WP-CLI

Ejecuta como propietario del sitio desde el directorio raíz de WordPress. Verifica las sumas publicadas del núcleo y complementos cuando existan. El código propio o comercial necesita otra revisión de integridad. Esta comprobación no establece el parche de PHP.

wp core version
wp core verify-checksums
wp plugin verify-checksums --all --strict
wp eval 'echo PHP_VERSION, PHP_EOL, PHP_SAPI, PHP_EOL;'
PHP2Shell: regla HTTP local para Suricata

Heurística local, no firma confirmada de un exploit. Requiere visibilidad de HTTP sin cifrar o después de terminar TLS y límites suficientes de inspección del cuerpo. Investiga las alertas antes de automatizar acciones.

alert http $EXTERNAL_NET any -> $HOME_NET any (msg:"LOCAL upload progress marker observed - investigate"; flow:established,to_server; http.request_body; content:"PHP_SESSION_UPLOAD_PROGRESS"; nocase; classtype:misc-activity; sid:9900618; rev:1;)

# Validate with your installed Suricata version before loading:
# suricata -T -c /etc/suricata/suricata.yaml -S local.rules
PHP2Shell: regla YARA para clasificación de archivos

Heurística amplia para seleccionar archivos PHP sospechosos. También puede coincidir con código legítimo; un resultado no prueba compromiso. No identifica por sí misma este exploit de corrupción de memoria ni inspecciona tráfico cifrado.

rule Local_Suspicious_PHP_Execution_Review
{
  meta:
    description = "PHP file triage only; manual review required"
  strings:
    $php = "<?php" nocase
    $decode = /base64_decode\s*\(/ nocase
    $exec = /(eval|shell_exec|system|passthru)\s*\(/ nocase
  condition:
    filesize < 2MB and $php and $decode and $exec
}

// Save as triage.yar; run: yara -r triage.yar /var/www/html

Gestionar PHP2Shell en varios servidores o instalaciones antiguas de WordPress

Cambiar php.ini manualmente en decenas de VPS o cuentas cPanel compartidas deja puntos ciegos. Reduce la exposición a PHP2Shell con controles WAF administrados mientras registras las actualizaciones verificadas de PHP en cada servidor de origen.

Cloudflare Managed WAF

Consulta al proveedor la cobertura de sus reglas para multipart POST malformado y PHP2Shell. Ninguna regla perimetral genérica sustituye ambos parches de PHP. Mantén la política de acceso al origen alineada con el proxy.

Ver configuración WAF de PHP2Shell

Sucuri Website Security y WAF

En PHP 7.4 sin soporte o alojamiento compartido sin acceso al php.ini del sistema, solicita información sobre parches verificados, respuesta a incidentes y límites del filtrado administrado. Documenta el estado de cada cuenta.

Ver instrucciones para Apache

Actualizaciones verificadas y sustitución gradual

Registra las revisiones de paquetes y digests de imágenes de cada servidor, contenedor y grupo. Verifica los procesos nuevos detrás del balanceador antes de retirar los antiguos. Comprueba la salud real de la aplicación y la capacidad restante.

Ver ejemplos Docker y Kubernetes

Vulnerabilidad PHP2Shell: análisis técnico y defensa

1. Por qué comprobar PHP2Shell aunque no exista un formulario de carga

La vulnerabilidad PHP2Shell no es un fallo de un único complemento de CMS ni de una pantalla de carga. Afecta al propio PHP, al procesamiento de las peticiones y a la gestión de estado. Inventaría todos los puntos PHP expuestos, las SAPI utilizadas, las extensiones, el tratamiento de errores y los archivos de configuración efectivos. El inicio de sesión o la verificación CSRF pueden ejecutarse después de que el entorno haya procesado partes de la petición. Por eso, ni la ausencia de una función visible de carga ni la falta de un marcador concreto demuestran seguridad.

multipart/form-data y session.upload_progress ayudan a entender algunas vías de PHP2Shell. Sin embargo, los avisos oficiales describen dos problemas: corrupción al limpiar después de un agotamiento de memoria y estado global que permanece entre peticiones. Bloquear un solo campo POST no implica corregir ambos. Verifica si el paquete instalado contiene las dos correcciones completas. Incluye en la comprobación las revisiones de distribución, las adaptaciones del proveedor y la procedencia de las imágenes de contenedor.

2. Desactivar el progreso de carga: efecto y limitaciones

PHP puede registrar en la sesión el progreso de una carga en curso. session.upload_progress.enabled = Off desactiva esa función y reduce la superficie de una vía de sesión relevante. El procesamiento habitual de $_FILES es independiente: no equivale a desactivar todas las cargas de archivos. Aun así, las barras de progreso propias, las consultas periódicas, los complementos y las transferencias grandes pueden depender de esta función. Prueba la publicación de medios y los flujos completos de negocio antes de desplegar el cambio en todos los servidores.

La opción debe aplicarse a la SAPI web, no solo a la terminal. Los grupos FPM y los contenedores pueden cargar INI distintos; después de una recarga gradual aún pueden quedar procesos antiguos. Separa la verificación de la configuración de la del binario corregido. Para solucionar PHP2Shell, todos los procesos deben ejecutar una compilación parcheada. En PHP 8.5, evalúa las opciones adicionales de arranque, como fatal_error_backtraces, junto con los avisos oficiales y las necesidades concretas de la aplicación.

Cómo solucionar PHP2Shell: parches completos frente a mitigación temporal

Compara cobertura, impacto operativo y uso en sistemas sin soporte. Selecciona una fila para ver sus límites y la configuración correspondiente. Desactivar el progreso de carga no constituye una solución completa de PHP2Shell.

Cómo solucionar PHP2Shell: parches completos frente a mitigación temporal
MedidaCoberturaImpacto operativoUso sin soporteLimitación principal
Correcciones oficiales completasSustituir todos los procesosMigración o parche del proveedorVerificar procedencia y las dos CVE
Parte de la vía de sesiónReiniciar o sustituir procesos PHPSíProbar el progreso y continuar con el parche completo
Parte de la vía de sesiónRecargar Nginx y verificar PHPSíPriorizar el arranque y combinar parámetros existentes
Heurística / depende del proveedorRegla perimetral normalmente sin reiniciar PHPSíLímites de inspección, falsos positivos y acceso al origen

La solución completa de PHP2Shell exige un PHP compatible corregido y sustituir todos los procesos. Si el paquete muestra una versión oficial antigua, verifica la adaptación exacta del proveedor.

Consultar el aviso oficial del parche

3. Defensa en profundidad: combinar filtros perimetrales y parches de PHP

La respuesta a PHP2Shell combina reducción de exposición, actualización completa e investigación de incidentes. Inventaría todos los orígenes, procesos, contenedores, paneles de alojamiento y servicios en segundo plano. Comprueba permisos del WAF, límites de análisis y rutas que eviten el proxy. Observa el tráfico legítimo antes de imponer reglas más estrictas para que los falsos positivos no provoquen interrupciones innecesarias. Un despliegue gradual y verificable resulta especialmente importante cuando administras sitios de varios clientes.

Para mantener disponibilidad necesitas réplicas sanas de reserva, comprobaciones de preparación y retirada ordenada de conexiones existentes. Un restart o reload por sí solo no garantiza continuidad. Conserva un plan de reversión operativa sin volver a una versión vulnerable de PHP. Los parches evitan reutilizar los fallos corregidos, pero no eliminan puertas traseras existentes ni credenciales robadas. Preserva registros e investiga archivos, procesos hijos y conexiones salientes inesperadas. La ausencia de bloqueos o marcadores no demuestra que nunca se produjera una intrusión.

PHP2Shell: fuentes primarias y verificación

Revisado el 22 de octubre de 2026. Herramienta independiente de respuesta defensiva ante PHP2Shell. Vuelve a consultar los avisos oficiales y el paquete exacto del proveedor antes de cambiar producción.

Preguntas frecuentes sobre la vulnerabilidad PHP2Shell

Respuestas prácticas para desarrollo y operaciones sobre cómo solucionar PHP2Shell, mantener el servicio y verificar los parches.

PHP2Shell designa dos fallos críticos del entorno PHP con CVSS 4.0 9.2. Los informes oficiales describen corrupción al limpiar tras falta de memoria y estado global residual entre peticiones. En las condiciones afectadas puede producirse ejecución remota de código. session.upload_progress es una vía relevante, no toda la causa. Evalúa la SAPI, la aplicación y las extensiones que sirven tráfico utilizando los dos avisos de PHP.