SSTI (Server-Side Template Injection)
hackingDéfinition
Le SSTI (Server-Side Template Injection) est une vulnérabilité référencée sous CWE-1336, survenant lorsqu'une entrée fournie par un utilisateur est intégrée sans validation ni échappement suffisant directement dans un template côté serveur, permettant à un attaquant d'injecter des expressions ou du code interprété nativement par le moteur de template lui-même, plutôt que d'être traité comme une simple donnée textuelle statique à afficher. Les moteurs de templates modernes comme Jinja2 (Python), Twig (PHP) ou Freemarker (Java) offrent, au-delà du simple remplacement de variables, des capacités d'exécution d'expressions et d'accès à des fonctions du langage sous-jacent, fonctionnalité légitime pour l'affichage conditionnel mais dangereuse lorsqu'une entrée utilisateur non fiable est traitée comme du code template. Une exploitation typique commence par une injection d'expression mathématique simple comme {{7*7}} : si la réponse affiche 49 plutôt que la chaîne littérale, le moteur interprète l'entrée comme du code exécutable, ouvrant la voie, selon le niveau de sandboxing, à l'accès à des objets système et l'exécution de commandes arbitraires (Remote Code Execution), impact bien plus critique qu'un simple XSS. La prévention repose sur la séparation stricte entre logique de template et données utilisateur, l'usage exclusif de placeholders de substitution simple, et le sandboxing rigoureux du moteur de template lorsque l'injection de logique dynamique reste fonctionnellement nécessaire.
Description
Le SSTI exploite l'évaluation dynamique des moteurs de templates côté serveur (Jinja2, Twig, Freemarker) pour exécuter du code arbitraire. Quand des données utilisateur sont rendues directement dans un template sans échappement, elles sont évaluées comme des expressions du moteur.
Exploitation
Un payload {{7*7}} affiché comme 49 confirme une SSTI Jinja2. Des payloads avancés accèdent aux classes Python pour exécuter des commandes OS, lire des fichiers ou établir des connexions réseau vers des serveurs de l'attaquant.
Défense
- Passer les données utilisateur comme variables au rendu de template, jamais les concaténer dans le template
- Activer les modes sandbox des moteurs de templates pour restreindre l'accès aux objets système
- Tester systématiquement les points d'entrée avec des payloads SSTI dans le cadre des audits
Articles liés
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés. 2.1.7
Un projet cybersécurité ?
Expert dispo · Réponse 24h