Hızlı cevap: SSRF (Server Side Request Forgery), saldırganın bir web uygulamasını kandırıp sunucunun kendi adına istek atmasını sağlamasıdır. Uygulama, kullanıcının verdiği bir adrese istek yapıyorsa (örneğin bir görsel çeken, bir webhook doğrulayan ya da bir URL önizleyen özellik), saldırgan o adresi iç ağdaki bir kaynağa çevirebilir. Böylece dış dünyaya kapalı iç servislere, yönetim panellerine ve özellikle bulut sağlayıcıların meta veri servisine ulaşabilir. Bulut ortamlarında SSRF, tek başına bir sunucuyu ele geçirmeye yetebilecek kadar tehlikelidir ve OWASP Top 10 2021 listesinde A10 olarak yer alır. Kesin çözüm, sunucunun gideceği adresleri katı bir izin listesiyle sınırlamak ve iç ağa çıkışı kısıtlamaktır.

Web güvenliğinde son yıllarda en hızlı yükselen açık SSRF'tir ve bunun sebebi buluttur. Modern uygulamalar sürekli birbirine istek atar: bir webhook doğrular, bir görseli uzaktan çeker, bir bağlantının önizlemesini üretir. Bu masum görünen özellikler, saldırgan kontrol edebilirse bir silaha dönüşür. Bu yazı, SSRF'in nasıl çalıştığını, neden bulutta bu kadar tehlikeli olduğunu ve nasıl kapatılacağını anlatıyor.

SSRF nasıl çalışır

Bir uygulamanın, kullanıcının verdiği bir URL'den görsel çeken bir özelliği olduğunu düşünün. Kullanıcı bir adres verir, sunucu o adrese gidip görseli indirir. Normal kullanımda kullanıcı https://ornek.com/logo.png verir.

Ama saldırgan bunun yerine şunu verirse:

http://169.254.169.254/latest/meta-data/

Sunucu bu adrese kendi iç ağından istek atar. Bu adres, birçok bulut sağlayıcıda meta veri servisidir ve sunucunun kimlik bilgilerini, geçici erişim anahtarlarını içerebilir. Saldırgan, sunucuyu kandırarak kendi ulaşamayacağı bir kaynağa onun adına ulaşmış olur.

Sorunun kökü şudur: uygulama, kullanıcının verdiği adrese doğrulamadan istek atıyor. Sunucu, dış dünyadan erişilemeyen iç kaynaklara erişebildiği için, saldırgan sunucuyu bir köprü olarak kullanır.

SSRF neden bulutta bu kadar tehlikeli

SSRF her ortamda risklidir ama bulutta çok daha yıkıcıdır. Sebebi meta veri servisidir.

Bulut sunucuları, kimliklerini ve geçici erişim anahtarlarını iç bir meta veri adresinden alır. Bu adres yalnızca sunucunun kendisinden erişilebilir, dışarıdan değil. SSRF, tam olarak bu iç erişimi saldırgana açar:

  • Saldırgan, SSRF ile meta veri servisine ulaşır.
  • Oradan sunucunun bulut kimlik bilgilerini (rol anahtarlarını) çeker.
  • Bu anahtarlarla bulut hesabında sunucunun yetkisi kadar işlem yapar: veri okuma, kaynak oluşturma, hatta yetki yükseltme.

Yani tek bir SSRF açığı, bulutta bir sunucu ele geçirmesine ve oradan tüm hesaba yayılmaya dönüşebilir. 2019'da yaşanan ve kamuya açık biçimde raporlanan büyük bir bulut ihlali, tam olarak bu zincirle, bir SSRF açığından meta veri servisine ulaşılarak gerçekleşti.

SSRF türleri

Tür Nasıl işler Fark eden yön
Klasik (in band) Sunucunun aldığı yanıt saldırgana geri döner Sonucu doğrudan görür
Kör (blind) Yanıt geri dönmez, dolaylı kanıtla anlaşılır DNS ya da zamanlama ile doğrulanır
İç ağ taraması İç adreslere istek atıp yanıt farklarından harita çıkarma Ağ keşfi için kullanılır

Kör SSRF özellikle tehlikelidir çünkü uygulama saldırgana hiçbir çıktı göstermese bile, saldırgan sunucuyu bir istek makinesi olarak kullanabilir. Bu benzerlik nedeniyle SSRF, veri ile hedefin karışmasından doğar; aynı mantık SQL injection ve XSS açıklarının da temelindedir.

Nasıl korunulur

SSRF'in çözümü, sunucunun kime istek atabileceğini sıkı biçimde kontrol etmektir. Katmanlı savunma:

  • İzin listesi (allow list). En etkili yöntem. Sunucunun yalnızca önceden onaylanmış, bilinen adreslere istek atmasına izin verin. Kara liste (belirli adresleri engelleme) yaklaşımı yetersizdir çünkü atlatma yolları çok fazladır: farklı IP gösterimleri, yönlendirmeler, DNS oyunları.
  • İç ağa çıkışı kısıtlama. Uygulama sunucusunun iç ağdaki hassas servislere ve meta veri adresine erişimini ağ düzeyinde engelleyin. Sunucunun o adrese hiç gidememesi en sağlam savunmadır.
  • Meta veri servisini sertleştirme. Modern bulut sağlayıcılar, meta veri servisinin daha güvenli bir sürümünü sunar; bunu zorunlu kılmak SSRF etkisini büyük ölçüde azaltır.
  • Yönlendirmeleri doğrulama. Saldırgan, izin verilen bir adresten iç adrese yönlendirme yapabilir. Yanıttaki yönlendirmeler de doğrulanmalıdır.
  • URL şemasını kısıtlama. Yalnızca http ve https'e izin verin; file, gopher, dict gibi şemalar kapatılmalıdır.

SSRF, OWASP Top 10 2021'de A10 kategorisidir; genel çerçeve için OWASP Top 10 rehberi yazımıza bakabilirsiniz. Bulut tarafındaki denetim için bulut güvenlik denetimi yazımız da yol gösterir.

Doğrulama

SSRF'i güvenilir biçimde bulmanın yolu test etmektir:

  • Kod incelemesi. Kullanıcı girdisinden adres alıp sunucu tarafında istek atan tüm noktaları bulun. Görsel çekme, webhook, önizleme, içe aktarma özellikleri klasik risktir.
  • Yetkili sızma testi. Özellikle kör SSRF ve bulut meta veri zinciri, insan uzman gerektirir. Testin nasıl planlandığı için sızma testi süreci ve kapsamı yazımıza bakabilirsiniz.

Sık yapılan hatalar

  • Kara liste ile korunmaya çalışmak. Engellenecek adres listesi asla tam olmaz. İzin listesi kullanın.
  • Yönlendirmeleri unutmak. İzin verilen bir adres iç adrese yönlendirebilir. Yönlendirme sonrasını da doğrulayın.
  • Meta veri servisini sertleştirmemek. Bulutta bu tek adım SSRF etkisini ciddi biçimde azaltır.
  • İç ağ çıkışını açık bırakmak. Uygulama sunucusunun iç servislere erişmesi için çoğu zaman sebep yoktur, kısıtlayın.
  • Kör SSRF'i önemsememek. Çıktı görünmese de sunucu bir istek makinesine dönüşür.

Sık sorulan sorular

SSRF ile CSRF farkı ne? İsimleri benzer ama farklıdır. CSRF kullanıcının tarayıcısını kandırır, SSRF ise sunucuyu kandırır. SSRF genelde çok daha yıkıcıdır çünkü iç ağa erişim sağlar.

SSRF neden buluta özel bir tehlike? Bulut meta veri servisi, sunucunun kimlik anahtarlarını içerir ve yalnızca iç ağdan erişilir. SSRF bu iç erişimi saldırgana açar.

İzin listesi neden kara listeden iyi? Kara liste engellenecek her adresi öngörmek zorundadır ve atlatma yolları sonsuzdur. İzin listesi yalnızca bilinen güvenli adreslere izin verir, bu çok daha sağlamdır.

Kör SSRF tehlikeli mi? Evet. Uygulama saldırgana çıktı göstermese bile, saldırgan sunucuyu iç isteklerde bulunan bir araç olarak kullanabilir.

Modern çerçeve SSRF'ten korur mu? Çerçeveler otomatik korumaz, çünkü SSRF uygulamanın iş mantığındadır. Korunma, geliştiricinin adres doğrulaması yapmasına bağlıdır.

SSRF ile sunucu tamamen ele geçirilir mi? Bulutta, meta veri servisi zinciriyle bir sunucunun kimlik anahtarları çalınırsa, o sunucunun yetkisi kadar erişim mümkün olur. Bu ciddi bir yükseltme yoludur.

Kaynaklar

Uygulamanızın SSRF ve bulut meta veri zincirine karşı dayanıklı olup olmadığını ölçmek isterseniz DSET ile iletişime geçin. Ankara Hacettepe Teknokent laboratuvarımızdan sızma testi, bulut güvenlik denetimi ve güvenli kod incelemesi hizmeti veriyoruz.