Glossaire

SSTI (Server-Side Template Injection)

Vulnérabilité qui permet d'injecter du code dans les moteurs de templates côté serveur (Jinja2, Twig, Blade). Le SSTI survient lorsque des données utilisateur sont insérées directement dans un template sans assainissement. Elle peut mener à la lecture de fichiers, l'exécution de commandes système et la compromission complète du serveur.

Comment une SSTI apparaît

Une injection de template côté serveur (Server-Side Template Injection) survient quand une donnée fournie par l'utilisateur est interprétée par le moteur de templates au lieu d'être traitée comme du texte. Les moteurs concernés sont partout : Jinja2 (Python), Twig et Blade (PHP), Freemarker (Java), Handlebars ou EJS (Node.js). Le test classique consiste à injecter {{7*7}} : si la page affiche 49, le moteur a évalué l'expression — et un attaquant pourra aller beaucoup plus loin, souvent jusqu'à l'exécution de code arbitraire sur le serveur (RCE).

Où on la trouve dans un SaaS RH

Les logiciels RH et paie sont particulièrement exposés car ils génèrent énormément de documents personnalisés : modèles d'e-mails aux candidats, contrats de travail générés, attestations, campagnes de communication interne. Chaque fonctionnalité « modèle personnalisable » où un client peut insérer des variables ({{prenom}}, {{salaire}}) est une surface SSTI potentielle. Si le moteur de rendu n'est pas sandboxé, un utilisateur malveillant peut passer d'un simple modèle d'e-mail à la lecture des variables d'environnement du serveur — secrets, clés d'API, accès base de données.

Comment CleanIssue teste les SSTI

Nous identifions toutes les entrées qui alimentent un rendu de document ou d'e-mail, puis testons des charges spécifiques à chaque moteur de templates, en environnement contrôlé et sans exploitation destructive. Un constat SSTI est toujours accompagné de la preuve d'évaluation (le fameux 49), du moteur identifié et du niveau d'impact atteignable, avec les recommandations de sandboxing ou d'échappement adaptées à votre stack.

Questions fréquentes

Quelle est la gravité d'une SSTI ?

Souvent critique. Selon le moteur de templates et sa configuration, une SSTI peut permettre de lire des fichiers du serveur, d'exfiltrer des secrets d'environnement, voire d'exécuter du code arbitraire (RCE). Dans un SaaS multi-tenant, cela peut compromettre les données de tous les clients.

Comment se protéger d'une SSTI ?

Ne jamais concaténer d'entrée utilisateur dans un template. Utiliser des moteurs en mode sandbox (Jinja2 SandboxedEnvironment, par exemple), des templates « logic-less » pour le contenu client, et limiter strictement les variables disponibles au rendu. La validation d'entrée seule ne suffit pas.

SSTI et XSS, quelle différence ?

Une XSS s'exécute dans le navigateur de la victime ; une SSTI s'exécute sur votre serveur. L'impact d'une SSTI est donc généralement bien supérieur : elle vise l'infrastructure et les données de la plateforme elle-même, pas seulement la session d'un utilisateur.

Pages associées

Autres termes

Besoin d'une revue externe de votre SaaS RH ?

Expliquez votre produit, votre stack et votre contexte client. Nous revenons vers vous avec le bon niveau de revue.

Parler de votre audit