SSTI (Sunucu Tarafı Şablon Enjeksiyonu) Nedir? Korunma
SSTI, kullanıcı girdisinin şablon motoruna güvensiz geçmesiyle saldırganın sunucuda ifade çalıştırmasıdır; genelde uzaktan kod çalıştırmaya gider. Nasıl oluştuğu, XSS ile farkı tablosu, girdiyi veri olarak geçirme savunması ve KAOS ile tarama.
Hızlı cevap: SSTI (Server Side Template Injection, sunucu tarafı şablon enjeksiyonu), bir uygulamanın kullanıcı girdisini bir şablon motoruna güvensiz biçimde geçirmesi sonucu, saldırganın sunucuda şablon ifadeleri çalıştırabilmesidir. Şablon motorları, sayfa üretmek için içine değişken gömülen metin kalıplarıdır. Sorun, kullanıcı girdisi verinin yerine şablonun kendisine gömülürse ortaya çıkar; o zaman saldırgan, motorun çalıştıracağı ifadeler yazabilir. Çoğu şablon motorunda bu, dosya okumaya ve genellikle uzaktan kod çalıştırmaya kadar gider. Kök çözüm: kullanıcı girdisini asla şablonun parçası yapmamak, her zaman şablona veri olarak geçirmektir.
SSTI, XSS ile karıştırılır ama çok daha yıkıcıdır: XSS kurbanın tarayıcısında kod çalıştırır, SSTI ise sunucunun kendisinde. E-posta şablonları, rapor üreticileri, özelleştirilebilir mesajlar ve tema motorları bu açığın sık görüldüğü yerlerdir. Bu yazı SSTI'nin nasıl oluştuğunu, neden bu kadar tehlikeli olduğunu ve nasıl önlendiğini anlatır.
SSTI nasıl oluşur
Bir şablon motoru iki şeyi birleştirir: sabit bir kalıp ve içine gömülecek veri. Doğru kullanımda kullanıcı girdisi yalnızca veri olarak gömülür. Yanlış kullanımda ise geliştirici, kullanıcı girdisini doğrudan şablon metninin içine yerleştirir. Örneğin bir karşılama mesajı, kullanıcının adını şablona veri yerine kalıp olarak eklerse, saldırgan adı yerine bir şablon ifadesi yazar ve motor bunu çalıştırır.
Saldırgan tipik olarak şu adımları izler:
- Basit bir matematik ifadesi göndererek motorun girdisini yorumlayıp yorumlamadığını sınar.
- Yorumluyorsa, motora özel nesnelere ve fonksiyonlara erişmeye çalışır.
- Buradan dosya okuma, ortam değişkeni sızdırma ve sıklıkla sistem komutu çalıştırmaya geçer.
SSTI, XSS ve enjeksiyon farkı
| Açık | Nerede çalışır | Tipik etki |
|---|---|---|
| XSS | Kurbanın tarayıcısı | Oturum çalma, arayüz aldatma |
| SSTI | Sunucu şablon motoru | Dosya okuma, kod çalıştırma |
| SQL enjeksiyonu | Veritabanı | Veri sızması |
SSTI, sunucuda çalıştığı için genelde en yıkıcı olanıdır ve başarılı bir sömürü komut enjeksiyonu gibi tam sunucu kontrolüne yol açabilir.
Nerede karşımıza çıkar
- E-posta ve bildirim şablonları. Kullanıcının bir alanı şablona gömülüyorsa.
- Rapor ve belge üreticileri. Kullanıcı içeriğinden çıktı üreten sistemler.
- Özelleştirilebilir mesajlar ve temalar. Kullanıcının kalıp düzenlemesine izin veren yerler.
- Düşük kodlu ve otomasyon araçları. İfade değerlendiren alanlar.
Doğru savunma
1. Kullanıcı girdisini şablona veri olarak geçirin
En güçlü ve kesin savunma budur. Girdi, şablon metnine birleştirilmemeli, her zaman motorun veri kanalından geçirilmelidir. Böylece girdi hiçbir zaman ifade olarak yorumlanmaz.
2. Kullanıcının şablon yazmasına izin vermeyin
Kullanıcıya serbest şablon düzenleme yeteneği verilmemelidir. Zorunluysa, ifade çalıştırmayan, yalnızca güvenli değişken yerleştirmeye izin veren kısıtlı bir mantıksız motor kullanılmalıdır.
3. Sandbox ve en az yetki
Şablon değerlendirme, sıkı sınırlı bir ortamda çalışmalı; motorun tehlikeli nesnelere erişimi kısıtlanmalıdır. Uygulama hesabı yalnızca ihtiyacı olan yetkiye sahip olmalıdır.
4. Girdi doğrulama
Şablona giren değerler beklenen biçime göre katı doğrulanmalıdır. Bu, güvenli kod denetiminin bir parçası olarak ele alınmalıdır.
KAOS ile SSTI taraması
SSTI açıklarını, DSET'in yapay zekâ destekli otonom güvenlik tarama motoru KAOS ile ölçekli biçimde tarıyoruz. KAOS çok-ajanlı mimarisiyle kullanıcı girdisini yansıtan uçları keşfeder, motorun girdiyi bir ifade olarak yorumlayıp yorumlamadığını zararsız test yükleriyle dener ve motorun ifadeyi gerçekten değerlendirdiğini gösterebildiğinde bunu kontrollü biçimde doğrular; yalnızca kanıtlanmış bulguyu raporlar. Böylece bir XSS ile SSTI'yi ayırt eder ve gerçek etkiyi yanlış pozitif gürültüsü olmadan gösterir. KAOS insan uzmanın yanında çalışır ve her bulguyu çalışan bir kanıtla belgeler.
Sık sorulan sorular
SSTI ile XSS aynı mı? Hayır. XSS kurbanın tarayıcısında, SSTI sunucunun şablon motorunda çalışır. SSTI genelde çok daha yıkıcıdır çünkü sunucu kontrolüne yol açabilir.
Her şablon motoru SSTI'ye açık mı? Açık, motorun nasıl kullanıldığına bağlıdır. Kullanıcı girdisi veri olarak geçirilirse güvenlidir; şablonun parçası yapılırsa açık ortaya çıkar.
SSTI kod çalıştırmaya her zaman gider mi? Her zaman değil, ama birçok motorda gider. En azından dosya okuma ve bilgi ifşası riski vardır; ciddiye alınmalıdır.
Nasıl test edilir? Kullanıcı girdisinin yansıdığı yerlere zararsız bir ifade gönderilir; motor bunu değerlendirirse SSTI vardır.
Kaynaklar
- OWASP, Server Side Template Injection: https://owasp.org
- OWASP Web Security Testing Guide, Template Injection: https://owasp.org
- MITRE, CWE 1336: https://cwe.mitre.org/data/definitions/1336.html
- PortSwigger Web Security Academy, SSTI: https://portswigger.net/web-security/server-side-template-injection
Uygulamanızdaki SSTI ve şablon enjeksiyonu açıklarını KAOS ve uzman ekibimizle çalışan kanıtla tespit ettirmek için DSET ile iletişime geçin. Ankara Hacettepe Teknokent laboratuvarımızdan sızma testi ve güvenli kod denetimi hizmeti veriyoruz.
Kimliğinizi doğrulayın
Yetkilendirilmiş erişim alanı. Tüm giriş denemeleri kayıt altına alınır.