Los ataques comenzaron seis horas antes del parche: Dos fallos críticos de 9.2 en PHP

Los ataques comenzaron seis horas antes del parche: Dos fallos críticos de 9.2 en PHP

CiberseguridadAnálisis de VulnerabilidadesPHPEcosistema de Código Abierto

Fuentes:HN + web research

En el sector de la ciberseguridad existe un acuerdo tácito consolidado por décadas de práctica: cuando se descubre una vulnerabilidad grave, se firman acuerdos de confidencialidad, los defensores preparan en silencio los parches correspondientes, las partes coordinan una divulgación pública simultánea y los administradores de sistemas proceden a actualizar sus entornos de forma escalonada.

El 21 de octubre de 2026, esa rutina saltó por los aires. Varias horas antes de que las actualizaciones oficiales estuvieran disponibles, los sistemas de monitorización de Cloudflare ya detectaban ráfagas de ataques reales en producción. Los atacantes no esperaron a que los defensores cambiaran las cerraduras.

Unas 21 horas antes, los detalles técnicos de dos vulnerabilidades críticas se habían filtrado en foros de discusión técnica. Esta tormenta, bautizada como «PHP2Shell», dejó a los administradores de servidores de todo el mundo en una posición de absoluta indefensión. Aunque el mensaje original de la filtración fue eliminado al poco tiempo, varios organismos y empresas de seguridad confirmaron su veracidad. Los defensores accedieron a los detalles técnicos cuando los atacantes ya disponían de herramientas operativas en internet.

Los ataques llegaron antes que los parches

Las dos vulnerabilidades se registraron bajo las designaciones CVE-2026-109618 y CVE-2026-109619. El equipo oficial de PHP les asignó una puntuación de 9.2 según el estándar CVSS v4.0, mientras que la firma de investigación de seguridad watchTowr las catalogó directamente con la puntuación máxima de 10.0. Con esta severidad, cualquier servidor accesible desde la red pública corre el riesgo inminente de ser intervenido por completo.

La filtración comenzó el 20 de octubre a las 15:20 UTC, cuando un usuario identificado como petecooper difundió en la comunidad un aviso previo sobre los parches. Poco después, herramientas de prueba atribuidas a Calif Research comenzaron a circular por redes técnicas, y diversos ingenieros verificaron que el código de explotación funcionaba en entornos reales. El 21 de octubre a las 07:43 UTC, Cloudflare confirmó la detección de los primeros intentos de explotación en la red pública, más de seis horas antes del lanzamiento oficial previsto. Los parches definitivos no vieron la luz hasta las 14:00 UTC (22:00 hora de Pekín).

En la práctica, se abrió una brecha de 16 horas entre la filtración del vector de ataque y las primeras agresiones en el mundo real, un intervalo en el que los administradores no contaban con defensa oficial alguna.

Una sola subida de archivos basta para controlar el servidor

El origen de la vulnerabilidad se sitúa en uno de los mecanismos más habituales de la web: la subida de archivos. Cada vez que un usuario actualiza una foto de perfil, adjunta un documento o remite un formulario web, el navegador empaqueta los datos mediante el formato multipart/form-data y los entrega directamente al intérprete backend.

El fallo reside con exactitud en la rutina encargada de analizar y descomponer dichas peticiones en PHP. Al enviar un paquete malformado diseñado específicamente, el atacante provoca una corrupción de memoria a bajo nivel que le permite ejecutar comandos arbitrarios en el servidor de destino. La conclusión de la firma Sansec fue demoledora: basta una simple petición POST no autenticada, sin necesidad de credenciales ni condiciones previas.

Lo más alarmante es el punto en que se desencadena el error. La corrupción tiene lugar antes de que se ejecute la lógica de negocio de la aplicación, lo que vuelve inútiles los filtros y mecanismos de seguridad de plataformas como WordPress, WooCommerce o Magento. Dado que casi el 40 % de los sitios web de todo el planeta funcionan sobre WordPress, cualquier servidor que admita subidas de archivos mediante PHP se encuentra directamente expuesto.

Imagen de cabecera de las preguntas frecuentes de Tenable Figura: Documento oficial de preguntas frecuentes publicado por Tenable sobre las dos vulnerabilidades críticas de ejecución remota de código. Fuente: Tenable

El modo de mantenimiento no sirve de escudo

Ante un incidente de seguridad crítico, los administradores suelen activar el modo de mantenimiento de sus sitios, mostrando una página de aviso temporal para bloquear el acceso de los usuarios. En este caso, esa medida no ofrece ninguna protección. La página de mantenimiento es generada por la propia aplicación PHP, por lo que el paquete malicioso golpea el analizador del intérprete antes de que el flujo de la aplicación tome el control. Mientras el proceso de PHP siga activo en el servidor, el ataque surtirá efecto.

Para sobrevivir antes de recibir el parche, las organizaciones se vieron obligadas a asumir pérdidas funcionales inmediatas. Las opciones eran escasas: bloquear indiscriminadamente todas las solicitudes de subida de archivos a nivel de Nginx o Apache —inutilizando el cambio de avatares o la subida de catálogos—; blindar el cortafuegos del servidor de origen para admitir únicamente tráfico procedente de Cloudflare y forzar el filtrado WAF —lo que resulta inútil si la dirección IP real del servidor ha quedado expuesta en algún momento—; o bien detener por completo el servicio PHP y sustituirlo temporalmente por páginas HTML estáticas.

En el archivo php.ini se propusieron dos ajustes provisionales para mitigar la superficie de exposición: deshabilitar session.upload_progress.enabled y activar session.use_strict_mode. No obstante, los gestores de versiones de PHP recalcaron que estos cambios solo reducen vectores específicos y no sustituyen la actualización del propio núcleo de PHP.

Horas antes de la publicación de las correcciones, el Parlamento neerlandés, el Centro Nacional de Ciberseguridad de los Países Bajos (NCSC-NL) y el portal tecnológico Tweakers recurrieron a la medida más drástica: desconectar por completo sus sitios web. Como resumió Dane Knecht, director de tecnología de Cloudflare, las reglas de un WAF no pasan de ser un torniquete temporal.

Millones de servidores antiguos nunca recibirán una solución

Si la solución consistiera únicamente en pulsar el botón de actualizar, la crisis no alcanzaría dimensiones tan preocupantes. El investigador de seguridad Silas Cutler calculó que existen cerca de 1,3 millones de instancias de PHP directamente accesibles desde la red pública, convertidas en objetivos prioritarios de los escáneres automáticos.

El verdadero problema es que una enorme proporción de esas instalaciones nunca recibirá un parche oficial. La política de soporte del proyecto PHP cubre exclusivamente las ramas activas, por lo que las actualizaciones solo se publicaron para PHP 8.2 y versiones posteriores. Ramas como 5.x, 7.x, 8.0 y 8.1 alcanzaron su fin de ciclo de vida (EOL) hace años. A pesar de ello, siguen sustentando sistemas de producción en miles de empresas dentro de imágenes de contenedores y servidores legados que nadie se atreve a modificar.

Los ecosistemas de aplicaciones superiores reaccionaron de inmediato: WordPress publicó la versión 7.1.3, Drupal lanzó la 11.4.10, Laravel subió a la 13.36.0, y MediaWiki, phpBB, Magento y Symfony distribuyeron parches el mismo día. Sin embargo, si el intérprete subyacente continúa vulnerable, los parches a nivel de aplicación no consiguen cerrar la brecha.

En las distribuciones de Linux para empresas la situación fue compleja. El popular repositorio de terceros Remi’s RPM repository anunció que no ofrecería paquetes inmediatos el día del incidente. Los usuarios de sistemas basados en RHEL se vieron en la tesitura de esperar adaptaciones oficiales o compilar el código fuente directamente en sus entornos de producción.

Logotipo oficial de PHP Figura: Con tres décadas de historia y sustentando el 40 % de la web, PHP vio comprometida su arquitectura básica de análisis de peticiones. Fuente: BleepingComputer

La capacidad de distribución marca la nueva frontera de seguridad

La seguridad del software de código abierto ha descansado históricamente sobre un esquema idílico: coordinación estricta entre las partes, publicación puntual de soluciones y adopción ordenada por parte de los administradores. PHP2Shell ha fracturado ese frágil equilibrio.

Tanto Sansec como los organismos de seguridad de los Países Bajos advirtieron antes del lanzamiento de que los atacantes tardarían apenas 15 minutos en aplicar ingeniería inversa a los parches e iniciar escaneos masivos en internet. La realidad fue aún más cruda: la filtración previa permitió que los primeros ataques llegaran seis horas antes que los parches oficiales.

En el otro extremo, los ritmos de distribución del software empresarial son alarmantemente lentos. Una vez liberado el código fuente, es necesario esperar a que las distribuciones preparen y prueben los paquetes binarios, y a que las organizaciones programen ventanas de mantenimiento nocturnas, lo que suele demorarse días o semanas. Y para las versiones obsoletas fuera de soporte, la solución oficial nunca llegará.

La distancia real entre atacantes y defensores ya no radica en la destreza para escribir un parche, sino en la capacidad logística de llevar esa corrección a cada máquina activa. Mientras persistan la deuda técnica de versiones obsoletas y la inercia operativa, ni los parches más veloces podrán evitar que la primera ola de ataques golpee antes de tiempo.

Enlaces de referencia:

  • Comunicado oficial de seguridad de PHP
  • Informe de análisis técnico de Sansec
  • Preguntas frecuentes sobre la vulnerabilidad en Tenable
  • Informe de investigación de amenazas de watchTowr
  • Boletín de monitorización de amenazas de Cloudflare