La injecció de plantilles del costat del servidor (SSTI) és una vulnerabilitat en què l'entrada de l'usuari és avaluada per un motor de plantilles en lloc de representar-se com a text sense format, cosa que permet a un atacant executar codi arbitrari al servidor.
Com funciona la injecció de plantilles del costat del servidor entre bastidors
Una injecció de plantilles del costat del servidor es produeix quan l'entrada de l'usuari s'integra directament en un motor de plantilles i s'avalua sense una higienització o aïllament adequats. Això crea una vulnerabilitat SSTI que permet a un atacant injectar càrregues útils SSTI especialment dissenyades (per exemple, {{7*7}} a Jinja2), que el motor avaluarà, permetent-ho tot, des de la divulgació de dades fins a l'execució arbitrària de codi en el context del servidor. Com que els diferents motors de plantilles exposen diferents objectes i API, les càrregues útils SSTI varien segons la plataforma però comparteixen el mateix perill: permeten que l'entrada no fiable s'escapi del flux de renderització esperat i s'executi en temps d'execució de l'aplicació, cosa que sovint porta a l'execució remota completa de codi o al moviment lateral si no es controla.
Exemple mínimament vulnerable a Jinja2
Si un usuari envia ?nom={{7*7}}, l'aplicació ho avaluarà i retornarà Hola 49Això és una vulnerabilitat SSTI de manual.
Exemple mínimament vulnerable a Twig
Un atacant pot injectar càrregues útils SSTI com ara {{7*7}} per demostrar l'execució de codi. El perill: una simple injecció pot escalar fins a la lectura de fitxers, l'execució d'ordres del sistema operatiu o l'aprofundiment en la infraestructura.
Exploits del món real: càrregues útils SSTI que desencadenen l'execució remota de codi
Un cop existeix una vulnerabilitat SSTI, els atacants intenten passar de les matemàtiques de prova de concepte a la versió completa. RCEEls diferents motors de plantilla gestionen les càrregues útils de manera diferent.
Càrregues útils de Jinja2
- {{7*7}} → execució aritmètica
- {{config.items()}} → filtra la configuració del servidor.
- {{ “”.__class__.__mro__[2].__subclasses__() }} → camí cap a RCE
Càrregues útils de velocitat
- #conjunt($x=”7″)${x} → bypass d'injecció
- #set($a=$class.inspect("java.lang.Runtime")) → accés directe en temps d'execució
Càrregues útils de Twig
- {{7*7}} → aritmètica
- {{app.request.server.all}} → variables d'entorn
- {{_self.env.registerUndefinedFilterCallback(‘system’)}} → execució de codi
Aquestes càrregues útils SSTI demostren com la mateixa vulnerabilitat en diferents motors condueix a diferents explotar camins, però sempre són perillosos.
On s'amaga la injecció de plantilles del costat del servidor CI/CDAplicacions impulsades
La injecció de plantilles del costat del servidor no és només un risc d'aplicació web; apareix a modern CI/CD pipelines també. Els amagatalls típics inclouen:
- Gràfiques de timó a Kubernetes, on els valors de la plantilla es representen dinàmicament
- Plantilles de correu electrònic que concatenen entrades controlades per l'usuari
- Dashboards on s'injecten cadenes de consulta o dades de configuració a les plantilles
- Scripts de DevOps que generen HTML/Markdown utilitzant motors de plantilles.
Exemple:
If.Valors.missatge prové d'una entrada no fiable, introdueix una injecció de plantilla del costat del servidor a la implementació pipeline si mateix.
Prevenció de les infeccions del lloc de treball (SSTI) amb patrons de plantilla més segurs i anàlisi estàtica
Mitigar les vulnerabilitats SSTI requereix millors patrons de codificació i una detecció precoç.
Patrons segurs
- ❌ No utilitzar cadena_de_plantilla_de_renderització o equivalent
- ✅ Utilitzeu fitxers de plantilla predefinits i passeu variables sanejades
- ✅ Motors de plantilles de sandbox quan estiguin disponibles
- ✅ Valida i escapa l'entrada de l'usuari abans de renderitzar
Mini llista de control per a desenvolupadors
- No renderitzeu mai directament l'entrada bruta de l'usuari
- Utilitza plantilles en espai de proves quan sigui possible
- Sanejar i validar totes les variables de plantilla
- Evita els avaluadors de plantilles personalitzades
- Escaneja el codi per a cadena_de_plantilla_de_renderització o patrons de concatenació de cadenes
Anàlisi estàtica i els linters poden marcar construccions arriscades abans que arribin a la producció.
Integració de comprovacions SSTI a DevSecOps Pipelines
Detectar la injecció de plantilles del costat del servidor aviat és més barat i segur que arreglar-la més tard. Els equips de DevSecOps haurien d'integrar comprovacions a pipelines:
- Commit hooksrebutjar commits amb funcions perilloses (cadena_de_plantilla_de_renderització)
- Analitzadors estàtics: escaneja el risc d'injecció de plantilles del costat del servidor al codi de plantilla
- Validació de dependències: marca els motors de plantilles obsolets amb vulnerabilitats SSTI conegudes
- Pipeline portes: els blocs es fusionen fins que les comprovacions SSTI passen
Fent que la detecció de la càrrega útil SSTI formi part de CI/CD, eviteu que es publiqui codi explotable.
No deixeu que la injecció de plantilles del costat del servidor s'escapoli a la vostra pila
Una única injecció de plantilla del costat del servidor pot derivar-se de trucs matemàtics ({{7*7}}) fins a l'execució remota completa de codi. Les vulnerabilitats SSTI apareixen no només a les aplicacions web, sinó també a CI/CD pipelines, gràfics de Helm i plantilles de correu electrònic.
Transport per emportar claus
- No representar mai l'entrada bruta de l'usuari a les plantilles
- Validar i sanejar totes les variables dinàmiques
- Diferents motors (Jinja2, Velocity, Twig) tenen diferents càrregues útils SSTI, però tots es poden convertir en armes.
- Utilitzeu anàlisi estàtica i portes ràpides a errors en pipelines
- Plantilles d'auditoria a la vostra pila regularment
Xígeni escaneja la base de codi per detectar defectes d'injecció i altres patrons de codificació insegurs a mesura que apareixen, detectant construccions arriscades com la renderització de plantilles no sanejades abans que arribin a producció, amb la taxa de falsos positius més baixa del punt de referència OWASP. Xygeni CI/CD i IaC security l'escaneig estén aquesta mateixa cobertura a pipeline configuracions, gràfics de Helm i scripts de compilació, marcant configuracions incorrectes i ordres malicioses abans que s'enviïn. Quan Xygeni troba una vulnerabilitat, AI AutoFix genera una correcció contextual i preparada per al desenvolupador directament a la pull request, de manera que la remediació no espera al següent sprint.
En DevSecOps, detectar la injecció de plantilles a la pipeline L'etapa, no després del desplegament, és el que impedeix que una sola càrrega útil es converteixi en un compromís complet.
Comença gratis. No cal targeta de crèdit, escaneja el teu primer dipòsit en qüestió de minuts.
FAQ
Què és la injecció de plantilles del costat del servidor?
L'SSTI es produeix quan l'entrada de l'usuari es passa a un motor de plantilles i s'avalua com a codi en lloc de mostrar-se com a text, cosa que permet a un atacant executar ordres en el context del servidor.
SSTI és el mateix que XSS?
No. XSS injecta un script que s'executa al navegador de la víctima; SSTI injecta codi que el motor de plantilles avalua al propi servidor, motiu pel qual SSTI pot conduir directament a l'execució remota de codi.
Quins motors de plantilles són vulnerables a SSTI?
Qualsevol motor que avaluï expressions pot ser vulnerable si l'entrada de l'usuari hi arriba sense sanejar, inclosos Jinja2, Twig i Velocity, tot i que cadascun exposa objectes diferents i, per tant, rutes d'explotació diferents.
Com es pot prevenir la SSTI en CI/CD pipelines?
Cerca patrons perillosos com ara render_template_string at commit en temps, els motors de plantilles de sandbox eren compatibles i les fusions de portes es basaven en els resultats de l'anàlisi estàtica abans que el codi arribi a la producció.





