Ciberseguridad

PHP2Shell: CISA confirma ataques y aún hay miles de servidores expuestos

PHP2Shell ya se explota en ataques reales: CISA sumó las dos fallas de PHP a su catálogo KEV y hay 35 shells confirmados en honeypots. Qué revisar.

PHP2Shell: CISA confirma ataques a servidores PHP sin parchear - Facialix
Anuncios

CISA confirmó el 26 de octubre que PHP2Shell ya se explota en ataques reales. Las dos fallas críticas de PHP, CVE-2026-109618 y CVE-2026-109619, entraron a su catálogo de vulnerabilidades explotadas y las agencias federales de Estados Unidos tienen hasta el 29 de octubre para parchear.

Afecta a cualquier instalación de PHP que sirva páginas web y ya hay 35 ejecuciones de shell confirmadas en honeypots.

Logo de PHP con señal de alerta por vulnerabilidad crítica - Facialix
Logo de PHP junto a una señal de advertencia por las fallas críticas PHP2Shell.

Dos fallas que se disparan antes de tu código

Ambas permiten ejecución remota sin autenticación y tienen CVSS 4.0 de 9.2. CVE-2026-109618 nace del manejo de memoria agotada: si una petición llega al límite en el momento exacto, PHP deja datos internos a medio inicializar y luego los trata como válidos.

CVE-2026-109619 es un use-after-free: el estado de una petición apunta a memoria liberada y otra petición del mismo worker la reutiliza.

El riesgo mayor está en Apache con mod_php, donde la falla se dispara antes de que corra una línea de la aplicación. La Fundación PHP confirmó ejecución remota con la configuración por defecto. También cubre PHP-FPM, php-cgi, FrankenPHP y LiteSpeed.

Los parches salieron el 21 de octubre: PHP 8.5.12, 8.4.27, 8.3.36 y 8.2.35. El código vulnerable se remonta hasta PHP 5.4.0; de 5.4 a 7.3 no hay arreglo oficial.

Lo que se ha visto en el mundo real

Amazon detectó el primer intento el 17 de octubre, cuatro días antes de los parches. El 24 de octubre, el investigador Adel Karimi registró 35 shells en tres honeypots con PHP 8.4.26 y mod_php de un solo worker.

Wiz no ha visto una explotación completa en su telemetría: sus intentos agotaron la memoria pero fallaron al filtrar direcciones, por diferencias de compilación, límites y cantidad de workers. Aun así, midió una caída del 67% en máquinas vulnerables expuestas desde el 21 de octubre.

El exploit público funciona en configuraciones favorables, no en todas.

Actualizar no es suficiente: reinicia los workers

El paquete nuevo no cambia el código cargado en memoria. PHP-FPM y Apache siguen ejecutando la versión vulnerable hasta que reinicias los procesos. En un servidor propio es un reinicio de servicio; en hosting compartido, un ticket a soporte.

Si no puedes actualizar ya, la Fundación PHP recomienda memory_limit=-1 para CVE-2026-109618 y session.upload_progress.enabled=0 para CVE-2026-109619. En PHP 8.5 se suma fatal_error_backtraces=0. Son parches parciales y también exigen reiniciar.

Si tu web vive en un hosting compartido

WordPress muestra la versión en Herramientas, Salud del sitio, Información, Servidor; en cPanel suele estar en Select PHP Version. Si sigues en PHP 8.1 o antes, CISA recomienda sacar el sitio de línea: esas ramas ya no reciben versiones oficiales.

Código de una aplicación web con error de autenticación en pantalla - Facialix
Código de una aplicación web con un mensaje de autenticación fallida en pantalla.

Cloudflare desplegó reglas de WAF para todos sus planes, incluido el gratuito, pero solo cubren el tráfico que pasa por su red y son temporales.

PHP2Shell: los detalles que complican el parche

PHP 8.4.27 y 8.5.12 traen una regresión con SimpleXML que puede tumbar procesos; no viene de estos parches y ya hay arreglo en el código, sin versión publicada. El 23 de octubre PHP avisó además de CVE-2026-115560, una ruta poco probable en el progreso de subida de sesiones, sin parche y con la misma mitigación.

Las cifras de exposición tampoco coinciden: VirusTotal estima 5,1 millones de hosts PHP expuestos, Shodan cuenta 1,9 millones y Calif calcula 1,3 millones. La diferencia está en qué mide cada uno.

Qué mirar hoy

Revisa la versión, actualiza y reinicia. Si dependes de un proveedor, pídele por escrito qué versión corre y cuándo reinició. Un sitio con PHP 8.4.26 en el panel pero workers viejos sigue expuesto, y ese es el estado de más de un servicio que creyó haber terminado.

Avatar photo
Sobre el autor

Julio Del Angel

Redactor en Facialix

Ingeniero en Sistemas, egresado del Instituto Tecnológico Superior de Pánuco (TecNM), Veracruz. Especializado en desarrollo de software, tecnología e inteligencia artificial. Fundador y editor de Facialix, donde analiza noticias, avances científicos y oportunidades educativas.

Ver todos sus artículos →

Deja un comentario