Symfony publicó 5.4.54 el 15 de octubre de 2026 para la rama 5.4. Es una versión de seguridad firmada. Fabien Potencier publicó el lanzamiento en GitHub, y la etiqueta baea8c8 tiene una firma verificada por GitHub. El changelog reúne los cambios entre v5.4.53 y v5.4.54.

La actualización corrige tres CVE. ExpressionLanguage limita ahora el nivel de anidamiento de las expresiones analizadas. HttpFoundation elimina una ambigüedad que podía provocar backtracking en HeaderUtils::split(). Yaml limita la profundidad de recursión de su lexer inline. También se restringe la profundidad del árbol de nodos analizado, se corrige el tratamiento de ternarios encadenados y se controla el error que aparece cuando !!binary recibe un valor imposible de analizar.

HttpClient ya no vuelve a añadir la opción de consulta a los destinos de redirección de NoPrivateNetworkHttpClient. Acepta respuestas muy comprimidas y rechaza bombas de descompresión. También cubre rangos no enrutables adicionales. Rechaza proxies HTTPS a los que curl se conectaría sin cifrado. Una redirección que cambia de autoridad elimina el encabezado Host original. Si cambia el esquema, se descartan las credenciales. Las respuestas push con estado 3xx son rechazadas.

HttpFoundation valida los puertos de direcciones IPv6 mapeadas a IPv4 que llegan reenviadas, además de hosts y esquemas en las URL. Rechaza rutas inválidas, caracteres reservados en rutas y dominios de cookies, y valores no permitidos en X-Sendfile-Type. Las rutas de X-Accel-Redirect se codifican. Los patrones de hosts de confianza se combinan para evitar límites de PCRE. Los manejadores de sesión ya no son serializables. Mime rechaza nombres de encabezado inválidos, caracteres de control sin procesar y direcciones de correo mal formadas. Process usa una ruta absoluta para el fallback de cmd.exe en Windows, filtra variables de entorno inválidas y evita que variables de petición CGI o FastCGI lleguen a los subprocesos.

Los componentes Security ya no escriben tokens de sesión en los registros. Las cookies remember-me mal formadas y los parámetros inválidos de los enlaces de inicio de sesión se procesan de forma segura. Se eliminó el uso anidado heredado de unserialize() en las clases de tokens y excepciones. Las redirecciones con sesiones desactivadas quedan limitadas al host actual. Algunas llamadas a unserialize() usan allowed_classes => false. Los tokens del profiler se validan antes de usarse como nombres de archivo. El control de intentos de inicio de sesión usa un lock por defecto. También se reduce una condición de carrera relacionada con max_uses en los enlaces de inicio de sesión.

Messenger valida los stamps de los envelopes decodificados y deserializados. Los encabezados X-Message-Stamp-* quedan restringidos, y FlattenException ya no normaliza argumentos de traza. Serializer genera claves de caché correctas cuando el contexto no puede serializarse. Las cachés de MetadataAwareNameConverter se separan por instancia. MimeMessageNormalizer comprueba que la clase deserializada sea una parte Mime.

La versión también corrige los identificadores de sesión que PHP conservaba, los valores hash que no son cadenas en UriSigner, la coincidencia de la URL "0", los tokens de Redis que usaban el miembro reservado "write" y el escape de caracteres de control C1 codificados en UTF-8 en VarDumper. RateLimiter limita el tamaño del burst y la duración calculada. Cache no unmarshalla valores que SodiumMarshaller no puede descifrar. HttpKernel elimina encabezados internos de caché de las respuestas backend. El lanzamiento declara los polyfills necesarios para el código que funciona con PHP 7.2, conserva los permisos de origen al copiar archivos y mantiene privados los archivos tempnam() con sufijo. Console, MonologBridge y VarDumper también escapan las cadenas de contexto escritas en el terminal.