Comparte este correo electrónicoCopia el enlace público o compártelo en tu canal favorito.
LA SEMANA PHP · NÚMERO 154 · 27 DE OCTUBRE DE 2026

Lo que PHP2Shell nos ha enseñado


Hola 👋
Bienvenido a una nueva edición de La semana PHP. Han pasado ocho meses desde la última y vuelvo con un formato nuevo: menos lista de enlaces y más contarte qué ha pasado y por qué te importa. Y mira tú por dónde, lo hago en la semana más movida que recuerdo en PHP.
El martes 20 el equipo de seguridad de PHP hizo algo poco habitual: avisar con un día de antelación de que venía una publicación crítica. El miércoles 21 salieron PHP 8.5.12, 8.4.27, 8.3.36 y 8.2.35. Corrigen dos vulnerabilidades con CVSS 9.2 que permiten ejecutar código en el servidor sin autenticarse. El nombre con el que ya las conoce todo el mundo es PHP2Shell.
Si administras servidores, lo primero es mirar qué versión tienes y actualizar. Si sigues en 8.1 o anterior, no hay parche oficial: toca migrar, y esta vez no hay excusa. Mientras lo haces, Ondřej Surý ha publicado paquetes corregidos para Debian y Ubuntu de todas las ramas, de la 5.6 a la 8.5; conservan el número de versión, así que fíate del changelog y no de php -v. El viernes 23 PHP publicó además un aviso complementario sobre session.upload_progress: recomiendan desactivarlo hasta la siguiente versión de mantenimiento para cerrar otra vía, improbable pero posible, de ejecución remota. Y el lunes 26 salieron paquetes nuevos de PHP para Windows con Brotli 1.2.1, por el fallo HTTP2Shell que se alcanza a través de cURL. Si quieres saber si alguien llegó antes que tú, hay un script de triaje de solo lectura que revisa los rastros habituales.
Lo que más me ha llamado la atención es lo que ha pasado alrededor del parche. Amazon detectó intentos de explotación en sus honeypots el 17 de octubre, cuatro días antes de que se hiciera público. Cloudflare desplegó reglas en su WAF antes del anuncio. Y a las 48 horas ya había campañas intentando colar una variante de Mirai en servidores sin parchear. La ventana entre parche y explotación masiva ya no se mide en semanas.
Para entender cómo se gestionó todo por dentro, Volker Dusch, de la PHP Foundation, cuenta en Laravel News cómo se encontraron y corrigieron los fallos, y qué salió mal con la filtración del embargo. La propia Fundación explica qué va a cambiar en seguridad a partir de ahora. Y Daniel Scherzer, que empujó los commits a las 6:30 de la mañana con cuatro horas de sueño, lo narra en primera persona en The PHP Podcast, que tienes más abajo.
En el mundo WordPress, los sitios de WordPress.com ya estaban protegidos sin que tuvieras que hacer nada. Para el resto, el aviso en español de WordPress.org resume lo que hay que revisar.

Con el apoyo de WordPress.com
Tu web de WordPress.com estaba protegida contra PHP2Shell antes de que se publicara el parche. Seguridad, copias y actualizaciones incluidas en el precio, sin plugins extra que mantener.
Ver planes de hosting
TAMBIÉN ESTA SEMANA

Lo más importante

Aviso complementario: desactiva session.upload_progress
Dos días después, PHP recomienda poner session.upload_progress.enabled a 0 hasta la siguiente versión de mantenimiento para cerrar otra vía, improbable pero posible, de ejecución remota.
Millones de intentos de explotación para desplegar una variante de Mirai
De momento sin éxito, pero la ventana entre parche y ataque masivo se ha medido en horas, no en semanas.
Alguien intentó explotar PHP2Shell cuatro días antes de que se publicara
Amazon detectó intentos contra sus honeypots el 17 de octubre: las vulnerabilidades circulaban antes del anuncio.
Cloudflare desplegó reglas de WAF contra PHP2Shell antes del anuncio
Reglas activadas por defecto que usan señales de la petición y de la respuesta para cortar los intentos de explotación.
Sury.org publica paquetes parcheados para todas las versiones de PHP, de la 5.6 a la 8.5
Si usas Debian o Ubuntu con los repositorios de Ondřej Surý, hay paquetes corregidos también para las ramas sin soporte (8.1, 8.0, 7.4…). Conservan el número de versión, así que fíate del changelog y no de php -v.
Nuevos paquetes de PHP para Windows por el fallo de Brotli (HTTP2Shell)
8.5.12-1, 8.4.27-1, 8.3.36-1 y 8.2.35-1 incluyen Brotli 1.2.1, que corrige CVE-2026-111497. En Windows el descompresor vulnerable se alcanza a través de cURL si activas la descompresión automática de respuestas.
Ya parcheaste, pero ¿te habían entrado? Un script de triaje de solo lectura
Un script que revisa logs y rastros habituales de explotación de PHP2Shell sin tocar nada en el servidor.
Tu web de WordPress.com, protegida sin que tengas que hacer nada
Los sitios de WordPress.com ya estaban cubiertos antes de que el parche fuera público.
El aviso de WordPress.org en español
Qué revisar en tu instalación y cómo comprobar la versión de PHP que ejecuta tu servidor.

PHP y Symfony

PHP 8.6.0 RC4 disponible para pruebas
La versión final sigue prevista para noviembre. Si mantienes alguna extensión, es el momento de probarla.
Symfony AI 1.0.0-BETA1 y un hackathon de IA y MCP
Primera prerelease camino de la 1.0, y cuatro semanas de hackathon para construir agentes y servidores MCP con Symfony.
Symfony 8.2: transportes firmados y rotación de secretos en Messenger
La firma de mensajes pasa del componente al transporte, así que un mensaje inyectado en la cola ya no puede disparar handlers sensibles. Y los secretos se pueden rotar sin parar nada.
No hay caché
Tomáš Votruba defiende que la caché es el precio de un lenguaje lento, y explica por qué ECS, Rector y PHPStan la necesitan y qué pasaría si no.
Cómo encontrar los tests más lentos de PHPUnit
Rob Allen, con una receta corta para localizar qué tests te están frenando la suite.

Laravel

Réplicas de lectura sin datos obsoletos tras una escritura
El middleware PreventStaleDatabaseReads mantiene las lecturas del usuario en la base de datos principal justo después de guardar, para que el retraso de la réplica no le enseñe datos viejos.
Screenshot: capturas y PDF desde PHP y Laravel
Renderiza HTML, vistas Blade o páginas web a PNG, JPEG o PDF con Chrome y lo guarda en el disco que elijas.
Convertir respuestas de una IA en decisiones con reglas PHP
Tercer capítulo de la serie Decide with Jev: el modelo responde, pero quien decide es una clase PHP pequeña y testeable.

WordPress

WordPress 7.2 Beta 1 ya se puede descargar y probar
Solo para entornos de pruebas. Cuantos más la probemos ahora, menos sorpresas en la versión final.
WooCommerce 11.3 retira su endpoint MCP propio
Hay que migrar clientes y extensiones al WordPress MCP Adapter. La guía explica cómo.
Brecha en TeamUpdraft: usan claves de UpdraftCentral para colar puertas traseras
Si usas UpdraftCentral, UpdraftVault o UpdraftClone, regenera las claves de conexión y revisa tus sitios.
WordCamp Valencia, 31 de octubre y 1 de noviembre
Pensada para quien empieza y para quien quiere contribuir. Si estás cerca, merece la pena.
WordPress Contributor Toolkit 2.0
Interfaz nueva sobre el WordPress Design System, tema oscuro y traducciones a diez idiomas.
Siete decisiones antes de dar permisos a un agente de IA
Qué conviene pensar antes de conectar un agente a tu web, ahora que pueden trabajar aunque no estés delante.
Akismet cumple 21 años con módulo oficial para Drupal y SDK de PHP
El filtro antispam de Automattic sale del ecosistema WordPress: ya hay módulo para Drupal y una biblioteca PHP para usarlo en cualquier aplicación.

Más allá de PHP

GitLab parchea un fallo con CVSS 10 que afecta a doce años de versiones
Ejecución remota sin autenticación en instalaciones autogestionadas desde la 7.0, de 2014. Si tienes GitLab propio, actualiza.
HTTP2Shell: parches de emergencia por un fallo crítico en Brotli
El descompresor Brotli que llevan Node.js, Python y .NET permite ejecutar código con datos manipulados. Si descomprimes Brotli en el servidor, revisa tus dependencias.
Cómo Cloudflare recortó un 68 % su factura de inferencia
Caché de prompts y enrutado de modelos en su revisor de código con IA. Números concretos, que es lo que se agradece.

Para escuchar

The PHP Podcast, 22 de octubre: la semana de PHP2Shell por dentro
Daniel Scherzer cuenta cómo empujó los commits del parche a las 6:30 de la mañana con cuatro horas de sueño.
Freelandev #365: lidiando con PHP2Shell
Esther y Nahuai, en español, sobre una semana de revisar versiones, actualizar y migrar hostings de clientes.
Jukebox #238: Static Site Importer, con Chris Huber
Cómo Data Liberation y el importador de sitios estáticos facilitan traer cualquier web a WordPress.
La IA complica la traducción de WordPress
WordPress Podcast, en español: por qué cuesta más que nunca conseguir buenas traducciones de la interfaz.
Esta semana el consejo es fácil: actualiza PHP, revisa tus dependencias y, si tienes un rato, escucha a Daniel Scherzer contar cómo fue su miércoles. Si conoces a alguien que todavía no sabe lo de PHP2Shell, reenvíale este correo.
Un saludo,
Jesús Amieiro
Puedes seguirnos en:
twitter