Spring Framework corrigerait 16 failles de sécurité majeures
La dernière version de maintenance de Spring Framework comble un ensemble de vulnérabilités allant de la falsification de requêtes à la désérialisation non sécurisée. Un correctif prioritaire est vivement conseillé pour les applications web Java exploitant la branche 7.0.x.
Fil « Correctifs de sécurité dans Spring Framework 7.0.8 »
Les équipes de développement Java utilisant le framework d'entreprise Spring Framework doivent planifier une mise à jour rapide. La publication de la version 7.0.8 apporte le colmatage de 16 CVE (Common Vulnerabilities and Exposures : identifiants officiels de failles de sécurité), touchant plusieurs composants clés de la couche web du framework.
Typologie des vulnérabilités traitées
Les correctifs embarqués adressent plusieurs vecteurs d'attaque classiques mais critiques :
- SSRF (Server-Side Request Forgery : falsification de requêtes côté serveur) : cette faille permettait d'amener le serveur applicatif à émettre des requêtes HTTP vers des cibles internes non prévues.
- Path traversal (traversée de répertoires) : un attaquant pouvait contourner les restrictions d'accès pour lire des fichiers arbitraires sur le système hôte via la gestion des ressources statiques.
- Désérialisation non sécurisée (conversion de flux de données brutes en objets Java) : des faiblesses dans le traitement des objets ont été corrigées avec l'introduction d'un support pour
ObjectInputFilterpersonnalisé surDefaultDeserializer. - Open redirect et dysfonctionnements du parseur MIME (type de contenu HTTP).
Clarification sur la gestion des en-têtes proxy
Un changement de comportement notable concerne le traitement des en-têtes de sous-réseau en provenance des proxys (serveurs intermédiaires). Les filtres ForwardedHeaderFilter pour Spring MVC (module web bloquant classique) et ForwardedHeaderTransformer pour WebFlux (module web réactif) demandent désormais un paramètre booléen explicite pour valider l'usage des en-têtes standard Forwarded ou des alternatives X-Forwarded :
// Définition explicite de la prise en charge des en-têtes transmis par le proxy
ForwardedHeaderFilter filter = new ForwardedHeaderFilter(true);
L'ancien constructeur sans argument, qui traitait indifféremment les deux types d'en-têtes de manière non déterministe, est désormais déprécié et destiné à être retiré. Les projets s'appuyant sur ces mécanismes doivent contrôler leur configuration pour éviter toute ambiguïté sur l'identité réelle des clients HTTP distants.