Symfony hat am 15. Oktober 2026 die signierte Sicherheitsversion 5.4.54 für den 5.4-Zweig veröffentlicht. Fabien Potencier stellte das Release bereit. Der Tag baea8c8 trägt eine verifizierte GitHub-Signatur. Das Changelog vergleicht v5.4.53 mit v5.4.54.

Drei CVEs werden behoben. ExpressionLanguage begrenzt nun die Verschachtelung geparster Ausdrücke. HttpFoundation beseitigt eine Mehrdeutigkeit, durch die HeaderUtils::split() unerwünscht backtracken konnte. Yaml begrenzt die Rekursionstiefe seines Inline-Lexers. Weitere Korrekturen beschränken die Tiefe des geparsten Ausdrucksbaums, behandeln verkettete Ternärbedingungen und liefern einen kontrollierten Fehler, wenn !!binary einen nicht parsbaren Wert erhält.

HttpClient fügt die Query-Option bei Weiterleitungen mit NoPrivateNetworkHttpClient nicht erneut hinzu. Stark komprimierte Antworten werden akzeptiert, während Dekompressionsbomben abgewiesen werden. Zusätzliche nicht routbare Adressbereiche sind abgedeckt. HTTPS-Proxies, zu denen curl eine Klartextverbindung herstellen würde, werden abgelehnt. Bei einem Wechsel der Authority wird der ursprüngliche Host-Header entfernt. Ändert sich das Schema, verwirft der Client Zugangsdaten. Weitergeleitete Antworten mit 3xx-Status werden abgewiesen.

HttpFoundation validiert Ports in weitergeleiteten IPv4-mapped-IPv6-Adressen sowie Hosts und Schemes in URLs. Ungültige Pfade, reservierte Zeichen in Cookie-Pfaden und Cookie-Domains sowie nicht erlaubte Werte für X-Sendfile-Type werden abgelehnt. Pfade im X-Accel-Redirect-Header werden kodiert. Vertrauenswürdige Host-Muster werden zur Vermeidung von PCRE-Limits zusammengeführt. Session-Handler sind nicht mehr serialisierbar. Mime weist ungültige Header-Namen, rohe Steuerzeichen und fehlerhafte E-Mail-Adressen zurück. Process verwendet auf Windows einen absoluten Fallback für cmd.exe, filtert ungültige Umgebungsvariablen und verhindert, dass CGI- oder FastCGI-Requestvariablen an Unterprozesse gelangen.

Die Security-Komponenten schreiben keine Session-Tokens mehr in Logs. Fehlerhafte Remember-me-Cookies und Login-Link-Parameter werden sicher behandelt. Alte verschachtelte Aufrufe von unserialize() wurden aus Token- und Exception-Klassen entfernt. Weiterleitungen bei deaktivierten Sessions bleiben auf dem aktuellen Host. Ausgewählte unserialize()-Aufrufe verwenden allowed_classes => false. Profiler-Tokens werden vor der Verwendung als Dateinamen validiert. Login-Throttling nutzt standardmäßig einen Lock. Eine Race Condition bei max_uses für Login-Links wird eingeschränkt.

Messenger prüft Stamps in dekodierten und deserialisierten Envelopes. X-Message-Stamp-*-Header werden eingeschränkt, und FlattenException übernimmt keine Trace-Argumente mehr in der Normalisierung. Serializer erzeugt auch bei nicht serialisierbaren Contexts korrekte Cache-Schlüssel. Die Caches von MetadataAwareNameConverter gelten pro Instanz. MimeMessageNormalizer prüft, ob die deserialisierte Klasse ein Mime-Part ist.

Weitere Korrekturen betreffen von PHP übernommene Session-IDs, nicht als String vorliegende Hash-Werte in UriSigner, das Routing der URL "0", Redis-Lock-Tokens mit dem reservierten Member "write" und die UTF-8-Escapes von C1-Steuerzeichen in VarDumper. RateLimiter begrenzt Burst-Größe und daraus berechnete Dauer. Cache unmarshallt keine von SodiumMarshaller nicht entschlüsselbaren Daten. HttpKernel entfernt interne Cache-Header aus Backend-Antworten. Das Release deklariert die für PHP 7.2 benötigten Polyfills, bewahrt Dateirechte beim Kopieren und hält tempnam()-Dateien mit Suffix privat. Console, MonologBridge und VarDumper maskieren außerdem Kontextzeichenketten im Terminal.