En bref

  • CVE-2026-40477 : bypass de sandbox d'expressions dans Thymeleaf, CVSS 9.0
  • Versions affectées : Thymeleaf 3.1.3.RELEASE et antérieures, correction dans 3.1.4.RELEASE
  • Exploitation non authentifiée : SSTI vers RCE si du contenu utilisateur alimente un template
  • Action urgente : mettre à jour la dépendance Maven, valider tous les inputs templates

Les faits

L'équipe Thymeleaf a publié le 17 avril 2026 un correctif de sécurité pour la CVE-2026-40477, une faille permettant le contournement du mécanisme de restriction d'accès aux objets Java depuis les expressions de template. Référencée par GitLab Advisory Database et l'agrégateur Vulnerability-Lookup, la vulnérabilité affecte le moteur de templates serveur Thymeleaf jusqu'à la version 3.1.3.RELEASE incluse. Le score CVSS officiel atteint 9.0, avec un vecteur d'attaque réseau, sans authentification ni interaction utilisateur requise. Le défaut résulte d'une faiblesse dans le sandbox d'expressions du moteur : certains objets sensibles, normalement hors d'atteinte des templates, restent accessibles via des constructions d'expressions spécifiques. Combiné à la pratique répandue d'injection de variables utilisateur dans le rendu Thymeleaf, ce bypass ouvre la voie à une Server-Side Template Injection capable d'aboutir à l'exécution de code arbitraire sur le serveur d'application Java. Aucune exploitation publique active n'est confirmée à ce stade, mais des proof-of-concept circulent déjà dans les communautés de chercheurs.

Thymeleaf est intégré par défaut à de nombreuses applications Spring Boot, ce qui amplifie la surface d'exposition. Le scénario de risque le plus courant survient lorsqu'un développeur, par méconnaissance des bonnes pratiques, transmet directement une chaîne issue d'un paramètre HTTP — par exemple un message d'erreur personnalisé, un sujet d'e-mail, ou un nom d'utilisateur — au rendu Thymeleaf via StandardTemplateResolver sans passer par les variables typées. Le bypass autorise alors l'attaquant à invoquer des méthodes Java arbitraires, jusqu'à Runtime.getRuntime().exec() et la prise de contrôle complète du serveur applicatif.

Impact et exposition

Le périmètre concerné est considérable : Thymeleaf est l'un des moteurs de templates les plus utilisés dans l'écosystème Spring, présent dans une part significative des applications Java web déployées en entreprise. Selon les statistiques d'usage publiées par Maven Central, plusieurs millions de téléchargements mensuels documentent l'ampleur de la dépendance. Toutes les applications utilisant une version 3.1.3 ou antérieure et acceptant du contenu utilisateur dans le pipeline de templates sont exposées. La vulnérabilité est particulièrement insidieuse car elle ne déclenche pas d'erreur visible : un attaquant peut tester silencieusement la possibilité d'évasion sandbox via des payloads bénins avant de pivoter vers une exploitation complète. Les contextes les plus à risque incluent les portails self-service, les outils de génération de PDF basés sur Thymeleaf, les moteurs de notifications e-mail, et tout endpoint exposant des aperçus de templates personnalisables. La complexité d'exploitation est qualifiée de faible par la notice CVSS, ce qui signifie qu'un payload générique peut suffire à compromettre une grande partie des cibles vulnérables.

Recommandations immédiates

  • Mettre à jour la dépendance org.thymeleaf:thymeleaf vers la version 3.1.4.RELEASE — advisory GitLab Maven Database CVE-2026-40477
  • Auditer le code applicatif pour identifier toute alimentation directe de templates par des paramètres utilisateur non validés
  • Préférer systématiquement le passage de variables typées via le contexte Thymeleaf plutôt que la concaténation dans la chaîne template
  • Activer un Content Security Policy strict sur les pages générées pour limiter les répercussions en cas de compromission
  • Mettre en place un WAF avec des règles ciblant les patterns d'injection d'expressions ${T(...)} et *{#...}
  • Surveiller les journaux applicatifs à la recherche d'erreurs de parsing d'expression Thymeleaf inhabituelles

⚠️ Urgence

Les proof-of-concept publics rendent l'exploitation triviale dans les jours à venir. Les applications Spring Boot exposées sur Internet et utilisant Thymeleaf doivent prioriser le déploiement du patch 3.1.4 sous 48 à 72 heures. La présence de Thymeleaf comme dépendance transitive doit également être vérifiée — un audit Maven complet via mvn dependency:tree est recommandé avant toute conclusion.

Comment savoir si je suis vulnérable ?

Inspectez votre fichier pom.xml ou build.gradle pour identifier la version de Thymeleaf utilisée. Exécutez mvn dependency:tree | grep thymeleaf pour révéler les versions transitives. Toute version antérieure à 3.1.4.RELEASE est concernée. Vérifiez ensuite si votre code passe des chaînes utilisateur au moteur de templates via process() ou processToString() sans encapsulation dans le contexte de variables nommées.

Existe-t-il une mitigation sans mise à jour ?

Aucune mitigation officielle n'est documentée par l'éditeur en dehors de la mise à jour. La seule contre-mesure provisoire consiste à s'assurer qu'aucune entrée utilisateur n'est jamais transmise comme template texte au moteur. Toute logique applicative qui combine des chaînes utilisateur dans un template avant rendu doit être réécrite pour utiliser exclusivement des variables nommées passées via le contexte.

Pour aller plus loin

Les vulnérabilités d'injection dans les frameworks Java restent un vecteur récurrent. Voir notre analyse récente de la RCE critique n8n via injection, ainsi que l'exploitation WebSocket de Marimo. Pour le panorama complet du mois, consulter le bilan du Patch Tuesday avril 2026 et notre dossier sur la gestion des zero-days en 2026.

Votre infrastructure est-elle exposée ?

Ayi NEDJIMI réalise des audits ciblés pour identifier et corriger vos vulnérabilités.

Demander un audit