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.
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. 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. 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. 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. 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.
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 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.
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.
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.
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.
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.
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.
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
Medida
Cobertura
Impacto operativo
Uso sin soporte
Limitación principal
Correcciones oficiales completas
Sustituir todos los procesos
Migración o parche del proveedor
Verificar procedencia y las dos CVE
Parte de la vía de sesión
Reiniciar o sustituir procesos PHP
Sí
Probar el progreso y continuar con el parche completo
Parte de la vía de sesión
Recargar Nginx y verificar PHP
Sí
Priorizar el arranque y combinar parámetros existentes
Heurística / depende del proveedor
Regla perimetral normalmente sin reiniciar PHP
Sí
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.
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.
La corrección completa requiere un PHP parcheado y sustituir todos los procesos antiguos. Las reglas perimetrales suelen poder desplegarse sin reiniciar PHP, pero ninguna configuración genérica cubre por completo ambas CVE. Desactivar el progreso de carga de sesión es una reducción temporal del riesgo. Usa sustitución gradual con suficiente capacidad sana de reserva y prueba la aplicación. Reiniciar o recargar no garantiza por sí solo que no haya interrupciones.
No desactiva el mecanismo normal $_FILES de WordPress, Laravel, Drupal o Magento. Sin embargo, el código propio o los complementos que consultan el progreso de la sesión pueden depender de él. Prueba cargas de medios, indicadores de progreso, archivos grandes y flujos completos en tu entorno. La compatibilidad de la aplicación y la verificación de los parches completos de PHP2Shell son comprobaciones distintas.
Las ramas oficiales corregidas empiezan en 8.2.35, 8.3.36, 8.4.27 y 8.5.12. Las versiones anteriores de esas ramas necesitan actualizarse. PHP 8.1 y anteriores están fuera de soporte oficial y necesitan migración o un parche de seguridad verificado del proveedor. Algunas distribuciones conservan un número antiguo con las correcciones incorporadas: contrasta la revisión exacta del paquete con ambas CVE. Comparar versiones no detecta un compromiso anterior.
Revisa evidencias del servidor web, PHP, sistema y herramientas de protección para localizar fallos, archivos, procesos y conexiones salientes inesperados. Buscar PHP_SESSION_UPLOAD_PROGRESS solo es una heurística y puede coincidir con tráfico legítimo. Los registros habituales omiten cuerpos y cookies, por lo que grep no detecta todos los intentos de PHP2Shell. Conserva evidencias y consulta también registros rotados y monitorización. Una búsqueda sin resultados no demuestra que nunca hubo compromiso.
Revisa todas las instalaciones PHP que atienden peticiones web, incluidas PHP-FPM, Apache mod_php, CGI, LiteSpeed y FrankenPHP. La posibilidad y fiabilidad de explotación cambia con la SAPI, el comportamiento de la aplicación, las extensiones y la configuración. No presupongas un exploit idéntico confirmado en todas ellas ni seguridad por no tener formularios de carga. Aplica el parche de PHP2Shell apropiado en cada instancia y verifica todos los procesos activos.