PHP2Shell explotó: CVSS 9.2, el día anterior a la apertura, y los dos agujeros estaban en código durante 10 años.
Primero, la conclusión es que:PHP produjo un código remoto no autorizado para CVSS 9.2, números CVE-2026-109618 y CVE-2026-109619, con un apodo PHP2Shell. El 20 de octubre, se hizo público y el 21 de octubre se lanzaron los parches UTC, mientras que los botes de miel de Amazon se grabaron el 17 de octubre, cuatro días antes de la apertura.
Lo peor que eso es lo otro: estos dos agujeros son los primeros en llegar a PHP 5.4, lo que significa...Llevan más de una década en código.No lo sé. Y en 2024, cuando la auditoría de desarrolladores de PHP descubrió el camino de OOM, el equipo se reunió para discutir cómo solucionarlo.No estábamos de acuerdo y no lo arreglamos.No lo sé. La razón es que nadie pensó que podría ser usado.
Esta frase ahora se ve particularmente irónica. La razón para no poder hacerlo no es que el agujero sea insignificante, sino que la cadena es demasiado compleja para ir más allá de la capacidad física de los investigadores humanos. Entonces AI vino y lo escribió.
Primero, saca la palabra "respuesta multinacional de emergencia" del camino. Mira.
La palabra favorita de la fiesta del título es "la alarma global". No es una exageración esta vez, pero es una puntuación clara.
- PHP Official: El 20 de octubre se publicó un aviso anticipado en el que se indicaba que el 21 de octubre a las 14:00 UTC sería puesto en libertad en una versión segura si los detalles se filtraban o se registren. Como resultado, el número de CVE fue apuñalado a Hacker News el mismo día, y la liberación prevista para el 22 de octubre fue forzada a un día antes.
- CERT-EU: asesor de lanzamiento 2026-018 e incluir ambos CVEs.
- CloudflareEl 21 de octubre, CTO Dane Knecht dijo directamente "el ataque temprano ha sido visto emerger", y las reglas de la WAF fueron liberadas en su totalidad, incluyendo usuarios libres. Pero se hizo hincapié en que era sólo parar, y la solución real era parchear.
- Amazon threat information: Las latas de miel de MadPot fueron atrapadas el 17 de octubre, y otro lote fue atrapado el 21 de octubre, y la carga útil e infraestructura apuntaron a varios diferentes atacantes. php2shell "ya es ampliamente utilizado".
- Mira Towr: Ambos agujeros son reemergidos, mientras que se observan intentos de explotar ambos.
Así que "el ataque ha sido encontrado" no es una interpretación, sino un hecho. Y la Respuesta Multinacional de Emergencia no es un golpe - es sólo que los principales temas de la respuesta son los fabricantes, CDN y organizaciones de emergencia, no cualquier gobierno en el país.
Dos, dos agujeros, dos formas completamente diferentes de morir.
Mucha gente cree que es un agujero con dos números, no. Estas son dos rutas separadas de ataque, cada CVSS 9.2.
CVE-2026-109618: Bomba cuando la memoria se agota
El procesamiento de una solicitud se interrumpe cuando la distribución de memoria PHP falla. El problema es:En este momento, los datos de solicitud interna pueden haber sido sólo semiinicializados, y la lógica posterior de limpieza habría utilizado esta pieza de datos malos no incorporada como datos válidos.
El método de activación es simple: construir una solicitud multiparte para implorar la memoria. Lo raro es,El tamaño de la solicitud parece coincidir con su techo.No es el tamaño máximo post que se establece, es la decodificación y el consumo de procesamiento interno.
Lo peor es mod php. Mod php para Apache al solicitar el arranque fallóTodavía va a limpiar., por lo que esta cadena se puede completar antes de cualquier código aplicable se ejecuta. Tu código PHP está tan limpio, no hay agujero, no hay pararlo.
PHP-FPM matará al trabajador cuando no empiece, sólo para cortar la cadena, así que oficialmente, mod php es el mayor riesgo. Pero preste atención... esto no significa que el FPM esté a salvo.Después de la puesta en marcha exitosaTodavía existe la posibilidad de explotación.
CVE-2026-109619: Dirty state between requests
Este es peor. PHP reutilizará el proceso del trabajador para procesar múltiples solicitudes. La última solicitud de liberación de la memoria, el puntero permanece en el estado interno; la siguiente petición entra,Lea la dirección en blanco antes de la inicialización normal.No lo sé.
Errores fatales (deplemento de memoria, tiempo de ejecución) interrumpen la limpieza del estado. Aún peor, algún diagnóstico no letal durante el cierre habría reemplazado el estado equivocado.Rehacerlo.No lo sé.
Las vías oficiales confirmadas incluyen: RCEs con error fatal cuando PHP 8.5 habilitado Retrocesos de error fatal (abrimiento por defecto), y el ciclo de vida de sesión RCEs en el fp motor y FPM.session.upload_progress Por defecto, puede actuar como un consumidor temprano en un estado de suciedad.Y no hay necesidad de aplicar llamadasNo lo sé.
Este agujero todavía está pegado.Filtro de memoriaNo lo sé. ¿Qué estaba filtrando? es la contraseña, token, clave de API, certificado para otras solicitudes en la memoria del proceso. Wiz comparado directamente con Heartbled, que no es demasiado.
Timeline, más que titulo Mira.
| Hora | ¿Qué pasó? |
|---|---|
| Año 2024 | La auditoría básica del desarrollador de PHP encontró a OOM, ese error, el equipo no tenía consenso sobre la ley, lo puso en espera. |
| 2026-08 | Ryan Austin de Calif identifica lagunas con OpenAI GPT-5.6 Sol; Wiz Independent Discovery |
| 2026-10-17 | Amazon MadPot, la miel puede grabar un intento, cuatro días antes de la apertura. |
| 2026-10-20 | Número CVE filtrado en Hacker News and Social Media, PHP |
| 2026-10-21 | 14:00 UTC Publicación 8.5.12 / 8.4.27 / 8.3.36 / 8.2.35 |
El 17 de octubre debe ser señalado.El día público era el 20, pero el ataque tuvo lugar el 17.La propuesta de Amazon es directa: el punto de partida no debe estar en la fecha de la revelación, sino al menos el 17 de octubre.
En cuanto a cómo los atacantes obtuvieron la información por adelantado, el Amazonas dijo "no está claro". No puedo entrar en esto, pero tienes que aceptar una realidad.El día de la revelación nunca fue el día del ataque, pero el día que finalmente supiste.
Cuatro, esta vez es realmente AI.
El blog de Wiz contiene una frase que he leído dos veces: “Estos defectos subyacentes han existido durante décadas, pero para demostrar que pueden ser utilizados, necesitan una cadena de pasos excepcionalmente compleja, al margen de las capacidades reales de los investigadores humanos.El modelo de IA Frontline reduce significativamente este umbral.No lo sé.
Específico: Ryan Austin, investigador de Calif, fue encontrado en el proyecto OpenAI "Patch the Planet" con GPT-5.6 Sol. Wiz encontró el mismo problema independientemente. Para hacer uso de ella, necesitamos una cadena de fallas y apuntamos a cada objetivo.Diseño de memoria calibrado repetidamenteWiz dice que el modelo de primera línea les permite desarrollar aplicaciones utilizables para diferentes aplicaciones dentro de horas.
No significa "AI ganó otra vez".El punto es que el foso de "complejo" está fallando.
Muchas viejas lagunas no han sido golpeadas en las últimas dos décadas, no porque no sean serias, sino porque el umbral de utilización es demasiado alto — unas semanas de inversión por parte de los principales investigadores y un poco de suerte. Así que los pones en la columna "teóricamente arriesgada". Ahora esta valla se ha ido.
Los agujeros de diez años que se encuentran en su sistema y se evalúan como "difíciles y no procesados" tienen que ser re-rated.
Cinco, ¿a quién deberías ir?
| Subdivisión | Versión afectada | Eliminación |
|---|---|---|
| PHP 8.5 | < 8.5.12 | Levante a 8.5.12. |
| PHP 8.4 | < 8.4.27 | Levante a 8.4.27. |
| PHP 8.3 | < 8.3.36 | Levante a 8.3.36. |
| PHP 8.2 | < 8.2.35 | Levantar a 8.2.35. |
| PHP 7.4 / 8.0 / 8.1 | Todos | Oficialmente inédito, nivel de fuente sólo |
| PHP 5.4 – 7.3 | Todos | EOL, el gobierno no lo arregla. Negocios |
Varios recordatorios de la vida real:
- Linux Release and LTS VendorTengo un parche por adelantado.Revise el asesoramiento de su fabricante con un paquete de distribución. No aceleres el código fuente.
- Uso
rpms.remirepo.netNota: PHP declaró oficialmente la fuente el 21 de octubre.No hay actualizaciónAsí que puede cambiar a un paquete de distribución o hacerlo desde el código fuente. - El binario de Windows de PHP 8.5 también está en la página oficial de descarga.
- No creas que está bien correr en el contenedor -- la versión PHP del espejo del contenedor tiene que ser revisada.
Seis, si no puedes conseguir un parche, haz estos cuatro primero.
Primer estado:Ninguno de estos abajo te hará seguro.La frase oficial de PHP es "reducir la exposición a caminos específicos de ataque, pero no hacer instalaciones más seguras". Su valor es darle tiempo para conseguir parches.
Establecer límite de memoria a -1
Propósito: Para eliminar la tapa de memoria PHP predecible falló, es decir, CVE-2026-109618 ha confirmado la condición de disparador en la que depende.
El punto es,¿Cómo?: para establecer en lugares donde la aplicación no se altera, como el FPM Pool php_admin_value o Configuración Apache. Usted debe comprobar que no hay pops, directorios, ajustes de aplicación para añadir el límite de vuelta.Entonces reinicia a cada trabajador.
El precio es claro: usted está fuera de la propia cerca de memoria de PHP, y el fallo de distribución inferior puede todavía estar en ese camino peligroso. Así que tiene que ser un contenedor o un grupo para limitar la cubierta, pero es sólo una estrategia para "matar a las personas afectadas".Nunca use RLIMIT AS o RLIMIT DATAEstos dos son precisamente el tipo de fallas de distribución que crean las lagunas.
Reducir el tamaño máximo post
Sitios sin archivo 8M para archivar 32M y garantizado upload_max_filesize Menos que eso. Al mismo tiempo, se añaden límites al servidor web o capa proxy - el volumen de solicitudes decodificadas, el número de campos, el número de partes múltiples, el número de cabezas, la profundidad de nidos.Estas restricciones deben cubrir solicitudes que no sean válidas de Contenido-LengthO lo rodearemos.
3. Apago del proceso de sesión.
session.upload_progress.enabled = 0
Está escrito en php.ini, herramienta FPM o configuración del servidor.Debe ser eficaz antes de la solicitud.No lo sé. Uso ini_set() O FPM. .user.ini Era demasiado tarde... estaba sucio. El cambio también es reiniciar a todos los trabajadores.
PHP 8.5 Uno más
fatal_error_backtraces = 0
Este bloque sólo confirmó errores fatales retroceder, sin otras variantes. También requieren ajustes de nivel de administrador + workker reiniciar.
Además, la mención oficial de que muchos ignorarán:Arregla los errores fatales que los atacantes pueden desencadenar y ejecutar el tiempo fuera., incluyendo respaldo, carga, procesamiento de importaciones, fallas de limpieza. Y...Eliminar configuraciones obsoletas o ilegales impuestas a petición por solicitudEscupen la información diagnóstica antes de que sea inicializada y alimentan la fuga.
Esta última frase es muy fácil de entender:No funciona ocultar el diagnóstico con informes de errores, errores de visualización o @.No está pasando.
VII. Lecciones reales de este
No quiero terminar escribiendo "Cerrar el parche". Por supuesto que es un parche. Es hoy. Pero algunos juicios tienen que cambiar.
- El término "difícil de usar" ya no es el mismo que "prescrito".PHP la cadena de acceso de este agujero es lo suficientemente complicada para necesitar la ayuda de AI, que ya ha ayudado. Los viejos agujeros en su lista de activos que marcan "riesgo teórico" deben ser re-rated.
- El lenguaje funciona en un solo punto.WordPress, Drupal, Joomla, Magento, MediaWiki todos funcionan en PHP, su auditoría de código de aplicación está limpia, y el núcleo PHP está en problemas. Ritmo compensatorio de capas de infraestructura, con capas de aplicación separadas.
- "El código de aplicación está roto sin funcionar." WAF sólo puede retrasar.Cloudflare dijo que era parar. Poner el WAF como solución equivale a dar vida a la cobertura de reglas.
- Hay muchos sitios antiguos en el país usando PHP.Las estaciones que se ejecutan en PHP 5.6/7.0, que hace mucho tiempo no se mantuvieron y colgaron en un mainframe de la nube, están en esta exposición de 1,3 a 1,9 millones. No recibirán ningún aviso.
Se registran calibraciones de datos: W3Techs dice que PHP representa el 69,3% de los idiomas conocidos por el servicio, y Wiz el 70%; hosts de exposición, el investigador de seguridad Silas Cutler estima más de 1,3 millones, y Henk Poley ' s Shodan search is over 1.9 million. Estos números son de diferentes calibres y no los utilizan como valores precisos, pero la escala es la misma -Millones, globalmente.
Un detalle más vale recordar: cuando se filtró el número CVE, los puntos CVSS que salieron fueron 10.0, PHP fue confirmado oficialmente.Esa puntuación estaba equivocada.En realidad es 9.2. Nadie sabría nada sobre este detalle, pero siempre estará en circulación. Ver 10.0, sabes qué onda es.
Un agujero de 10 años, dos meses de investigación con ayuda de IA, cuatro días de uso temprano, una ventana de parche de un día. Esta escala de tiempo es la normalidad de todo el software básico que sigue.
Revisa la versión ahora.php -vO mira tus espejos de contenedor a la etiqueta. No esperes mañana.