A szerveroldali sablonbefecskendezés (SSTI) egy olyan sebezhetőség, ahol a felhasználói bemenetet egy sablonmotor értékeli ki ahelyett, hogy egyszerű szövegként jelenítené meg, így a támadó tetszőleges kódot futtathat a szerveren.
Hogyan működik a szerveroldali sablonbefecskendezés a színfalak mögött
Szerveroldali sablonbefecskendezésről akkor beszélünk, amikor a felhasználói bemenetet közvetlenül egy sablonmotorba ágyazzák be, és megfelelő fertőtlenítés vagy elkülönítés nélkül értékelik ki. Ez egy SSTI sebezhetőséget hoz létre, amely lehetővé teszi a támadó számára, hogy speciálisan létrehozott SSTI hasznos adatokat fecskendezzen be (például {{7*7}} (a Jinja2-ben), amit a motor kiértékel, lehetővé téve mindent az adatközléstől a tetszőleges kódfuttatásig a szerverkörnyezetben. Mivel a különböző sablonmotorok különböző objektumokat és API-kat tesznek elérhetővé, az SSTI hasznos adatai platformonként eltérőek, de ugyanazt a veszélyt hordozzák magukban: hagyják, hogy a nem megbízható bemenet kikerüljön a várt renderelési folyamatból, és az alkalmazás futásidejében végrehajtódjon, ami gyakran teljes távoli kódfuttatáshoz vagy oldalirányú elmozduláshoz vezet, ha nem ellenőrzik.
Minimálisan sebezhető példa a Jinja2-ben
Ha egy felhasználó elküldi ?név={{7*7}}, az alkalmazás kiértékeli, és visszaadja Helló 49Ez egy tankönyvbe illő SSTI sebezhetőség.
Minimálisan sebezhető példa Twigben
Egy támadó SSTI hasznos adatokat adhat be, például {{7*7}} a kódfuttatás bizonyítására. A veszély: az egyszerű injektálás fájlok olvasásához, operációs rendszerparancsok végrehajtásához vagy az infrastruktúrába való mélyebb behatoláshoz vezethet.
Valós világbeli biztonsági rések: SSTI hasznos adatok, amelyek távoli kódfuttatást indítanak el
Amint egy SSTI sebezhetőség megjelenik, a támadók megpróbálnak a koncepcióbizonyítási matematikáról a teljes körű matematikára váltani. RCEA különböző sablonmotorok eltérően kezelik a hasznos adatokat.
Jinja2 hasznos adatok
- {{7*7}} → aritmetikai végrehajtás
- {{config.items()}} → kiszivárogtatja a szerver konfigurációit.
- {{ “”.__class__.__mro__[2].__subclasses__() }} → az RCE-hez vezető út
Sebesség hasznos teher
- #set($x=”7″)${x} → befecskendezés megkerülése
- #set($a=$class.inspect(“java.lang.Runtime”)) → közvetlen futásidejű hozzáférés
Twig hasznos teher
- {{7*7}} → aritmetikai
- {{app.request.server.all}} → környezeti változók
- {{_self.env.registerUndefinedFilterCallback(‘system’)}} → kódfuttatás
Ezek az SSTI hasznos adatok azt mutatják be, hogy ugyanaz a sebezhetőség különböző motorokban hogyan vezet eltérő eredményekhez. kihasználni az utakat, de mindig veszélyesek.
Ahol a szerveroldali sablonbefecskendezés rejtőzik CI/CD-Vezérelt alkalmazások
A szerveroldali sablonbefecskendezés nem csak webes alkalmazási kockázat; a következőkben is megjelenik: modern CI/CD pipelines túl. Tipikus rejtekhelyek a következők:
- Helm diagramok Kubernetesben, ahol a sablonértékek dinamikusan jelennek meg
- E-mail sablonok felhasználó által vezérelt bemenetek összefűzése
- Dashboards ahol lekérdezési karakterláncokat vagy konfigurációs adatokat injektálnak a sablonokba
- DevOps szkriptek amelyek sablonmotorok segítségével HTML/Markdown kódot generálnak.
Példa:
If.Values.message nem megbízható bemenetről származik, akkor szerveroldali sablonbefecskendezést vezet be a telepítésbe pipeline maga.
SSTI megelőzése biztonságosabb sablonmintákkal és statikus elemzéssel
Az SSTI sebezhetőségeinek mérsékléséhez jobb kódolási minták és korai felismerés szükséges.
Biztonságos minták
- ❌ Ne használja render_sablon_karakterlánc vagy azonos
- ✅ Előre definiált sablonfájlok használata és fertőtlenített változók átadása
- ✅ Sandbox sablonmotorok, ha elérhetők
- ✅ A megjelenítés előtt ellenőrizze és zárja be a felhasználói bevitelt
Mini ellenőrzőlista fejlesztőknek
- Soha ne jelenítsen meg nyers felhasználói bevitelt közvetlenül
- Használjon sandbox sablonokat, ha támogatott
- Sablonváltozók fertőtlenítése és validálása
- Kerülje az egyéni sablonértékelőket
- Kód beolvasása a következőhöz: render_sablon_karakterlánc vagy karakterlánc-összefűzési minták
Statikus elemzés és a linterek a kockázatos konstrukciókat még azelőtt jelezhetik, hogy azok elérnék a gyártást.
SSTI-ellenőrzések beágyazása a DevSecOps-ba Pipelines
A szerveroldali sablonbefecskendezés korai észlelése olcsóbb és biztonságosabb, mint későbbi javítás. A DevSecOps csapatoknak ellenőrzéseket kell beágyazniuk a... pipelines:
- Commit hooks: elutasítás commitveszélyes függvényekkel (render_sablon_karakterlánc)
- Statikus analizátorok: szerveroldali sablonbefecskendezési kockázat vizsgálata a sablonkódban
- Függőség-érvényesítés: elavult sablonmotorok jelzése ismert SSTI sebezhetőségekkel
- Pipeline Gates: a blokkok összeolvadnak, amíg az SSTI ellenőrzések sikeresek nem lesznek
Azáltal, hogy az SSTI hasznos teher észlelését a CI/CD, megakadályozod a kihasználható kód valaha is történő szállítását.
Ne hagyd, hogy a szerveroldali sablonbefecskendezés beszivárogjon a rendszeredbe
Egyetlen szerveroldali sablonbefecskendezés matematikai trükkökből fakadhat ({{7*7}}) a teljes távoli kódfuttatásig. Az SSTI sebezhetőségek nemcsak webes alkalmazásokban, hanem a következő területeken is megjelennek: CI/CD pipelines, Helm-diagramok és e-mail-sablonok.
Legfontosabb elvitel
- Soha ne renderelje nyers felhasználói bevitelt sablonokba
- Minden dinamikus változó validálása és fertőtlenítése
- A különböző hajtóművek (Jinja2, Velocity, Twig) eltérő SSTI teherbírással rendelkeznek, de mindegyik felfegyverezhető.
- Statikus analízis és hibatűrő kapuk használata pipelines
- Rendszeresen auditálja a sablonokat a veremben
Xygeni A kódbázist beolvassa injekciós hibák és más bizonytalan kódolási minták után kutatva, amint azok megjelennek, és a kockázatos konstrukciókat, például a nem ellenőrzött sablonrenderelést még az éles környezetbe kerülésük előtt kiszűri, a legalacsonyabb téves pozitív aránnyal az OWASP Benchmarkon. A Xygeni CI/CD és a IaC security a szkennelés ugyanazt a lefedettséget kiterjeszti pipeline konfigurációkat, Helm-diagramokat és build szkripteket, megjelölve a hibás konfigurációkat és a rosszindulatú parancsokat, mielőtt azok kikerülnének. Amikor a Xygeni sebezhetőséget talál, az AI AutoFix egy kontextus-érzékeny, fejlesztőre kész javítást generál közvetlenül a pull request, így a javítás nem vár a következő sprintre.
A DevSecOpsban a sablonbefecskendezés elkapása a következő helyen: pipeline A telepítés után, nem pedig a telepítési szakaszban van az, ami megakadályozza, hogy egyetlen hasznos adat teljes mértékben kompromittálódjon.
Kezdje ingyenesen. Nincs szükség hitelkártyára, az első adattárolását perceken belül beolvashatja.
FAQ
Mi az a szerveroldali sablonbefecskendezés?
Az SSTI akkor fordul elő, amikor a felhasználói bemenetet egy sablonmotorba továbbítják, és kódként értékelik ki szöveg helyett, lehetővé téve a támadó számára, hogy parancsokat hajtson végre a szerver kontextusában.
Az SSTI ugyanaz, mint az XSS?
Nem. Az XSS egy olyan szkriptet fecskendez be, amely az áldozat böngészőjében fut; az SSTI pedig egy olyan kódot, amelyet a sablonmotor magán a szerveren értékel ki, ezért az SSTI közvetlenül távoli kódfuttatáshoz vezethet.
Mely sablonmotorok sebezhetőek az SSTI-vel szemben?
Bármelyik motor, amely kifejezéseket értékel ki, sebezhető lehet, ha a felhasználói bevitel nem ellenőrzött állapotban érkezik meg, beleértve a Jinja2-t, a Twig-et és a Velocity-t is, bár mindegyik más objektumokat, és így más sérülékenységi útvonalakat tesz elérhetővé.
Hogyan előzhető meg az SSTI? CI/CD pipelines?
Vizsgáljon veszélyes mintákat, például render_template_string at commit idő, a sandbox sablonmotorok ahol támogatottak voltak, és a kapuösszevonások statikus elemzési eredmények alapján történnek, mielőtt a kód elérné az éles környezetet.





