szerveroldali sablonbefecskendezés - ssti sebezhetőség - ssti hasznos adatok

Szerveroldali sablonbefecskendezés magyarázata valós kódpéldákkal

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.

sca-tools-software-composition-elemző-eszközök
Szoftverkockázatok rangsorolása, elhárítása és biztosítása
Szerezd meg az ingyenes fiókodat.
Nem szükséges hitelkártya.

Biztosítsa szoftverfejlesztését és -szállítását

az Xygeni termékcsomaggal