Ce qui se passe
Le 30 août au soir, trois versions sont sorties à vingt minutes d'intervalle : 6.4.45 (LTS), 7.4.18 et 8.1.6. Le mot « release corrective » induit en erreur. Les trois changelogs sont pour l'essentiel identiques, longs d'une trentaine d'entrées, et presque toutes signées Nicolas Grekas. Ce n'est pas une fournée de correctifs de confort : c'est un balayage de surface d'attaque, posé d'un coup sur les trois branches maintenues.
Ce que ça change
Le plus dense est HttpClient, où quatre entrées visent des scénarios d'attaque distincts :
| PR | Comportement nouveau |
|---|---|
| #65751 | Rejet des bombes de décompression |
| #65740 | Refus des proxys https:// que curl aurait joints en clair |
| #65731 | L'en-tête Host d'origine n'est plus envoyé sur une redirection vers une autre autorité |
| #65742 | Rejet des réponses poussées en 3xx |
Le second bloc concerne la désérialisation, sujet historique des chaînes de
gadgets PHP. Le unserialize() imbriqué disparaît des classes de jetons et
d'exceptions de Security (#65733), et allowed_classes => false est ajouté aux
appels de CacheWarmerAggregate, LoggerDataCollector et du store HttpCache
(#65737).
Le reste couvre l'authentification et le transport :
- Security — les paramètres de login link mal formés sont rejetés au lieu
de lever un
TypeError(#65734) ; un cookie remember-me malformé ne fait plus échouerPersistentRememberMeHandler(#65735) ; les redirections sont restreintes à l'hôte courant quand les sessions sont désactivées (#65732). - HttpKernel — l'identifiant de session conservé par PHP d'une requête
précédente est ignoré (#65736) ;
UriSignerne casse plus quand le paramètre de hachage n'est pas une chaîne (#65730). - HttpFoundation — caractères réservés refusés dans le chemin et le domaine
d'un cookie (#65729), chemin encodé dans l'en-tête
X-Accel-Redirect(#65743), motifs d'hôtes de confiance fusionnés en une seule expression régulière (#65753). - Process — les variables de contexte de requête CGI/FastCGI ne fuitent plus vers les sous-processus (#65738), et les noms de variables d'environnement invalides sont ignorés (#65739).
- Mime — une arobase non échappée dans la partie locale d'une adresse est
refusée (#65744). Filesystem — les fichiers
tempnam()restent privés quand un suffixe est fourni (#65745).
Ce qu'il faut faire
Monter les trois branches concernées cette semaine, sans attendre :
composer update "symfony/*" --with-dependenciesLe point à comprendre, c'est pourquoi rien ne vous le rappellera. Ces entrées
sont étiquetées bug, pas security. Aucun avis n'est publié, donc aucun
identifiant CVE n'existe, donc ni composer audit ni un scanner de dépendances
ne remontera quoi que ce soit. Un projet qui met à jour uniquement sur alerte
restera sur l'ancien comportement indéfiniment.
Sources : Symfony 6.4.45 · Symfony 7.4.18 · Symfony 8.1.6