SSRF
Sunucu Taraflı İstek Sahteciliği (Server-Side Request Forgery)
Kısaca
SSRF, bir saldırganın sunucuyu kendi seçtiği bir hedefe istek göndermeye zorladığı ve çoğu zaman erişemeyeceği iç sistemlere ulaşabildiği bir zafiyettir.
SSRF nedir?
Server-side request forgery, bir uygulamanın kullanıcının verdiği bir URL'yi, örneğin bir bağlantıdan profil resmi indirmek, bağlantı önizlemesi oluşturmak ya da bir webhook'u çağırmak için, bu URL'nin nereyi gösterebileceğini kısıtlamadan çekmesiyle ortaya çıkar. Saldırgan http://localhost:8080/admin gibi bir adres ya da dahili bir IP adresi verir ve sunucu isteği onun adına yapar. İstek ağın içinden geldiği için internetten gizlenmiş veritabanlarına, yönetim panellerine ve dahili API'lere ulaşabilir.
Bulutta klasik bir hedef, üzerinde çalışan her şeye geçici bulut kimlik bilgileri verebilen http://169.254.169.254 adresindeki instance metadata servisidir; bu yüzden ona ulaşan bir SSRF açığı tam bir hesap ele geçirmeye yol açabilir. Saldırganlar naif filtreleri http://2130706433 gibi alternatif IP biçimleri, dahili adreslere çözümlenen alan adları ve izin verilen bir siteden yasaklı bir siteye yönlendirmeler gibi hilelerle aşar. Kör (blind) SSRF'te saldırgan yanıtı hiç görmez, ancak yine de hangi dahili portların açık olduğunu yoklayabilir veya eylemleri tetikleyebilir.
Savunmalar, bir özelliğin gerçekten ihtiyaç duyduğu şemaların ve host'ların, alan adı bir IP adresine çözümlendikten sonra denetlenen bir izin listesiyle başlar; ayrıca özel (private), loopback ve link-local adres aralıkları engellenir. Otomatik yönlendirmeleri kapatın veya her adımı yeniden denetleyin, giden istekleri kısıtlı bir proxy veya ağ segmenti üzerinden gönderin ve daha yeni metadata servisi sürümlerinin yaptığı gibi bulut metadata'sı için oturum token'ı isteyin. Bu, bir odayı söyleyen her arayan için binadaki herhangi bir dosyayı getiren bir resepsiyonist gibidir: izin verilen odaların listesi olmazsa telefondaki bir yabancı kilitli arşivden belge alabilir.
SSRF, adlar çok benzediği için sıklıkla CSRF ile karıştırılır. CSRF'te saldırgan kullanıcının tarayıcısını, kullanıcının oturum açtığı bir siteye istek göndermeye kandırır; SSRF'te ise sunucunun kendisini, sunucunun ağ konumunu ve izinlerini kullanarak istek göndermeye kandırır. SSRF, 2021 OWASP Top 10'da kendi kategorisini alacak kadar önemliydi.
Önemli noktalar
- SSRF, bir sunucunun saldırganın seçtiği hedeflere istek göndermesini sağlar.
- Dahili servislere, yönetim panellerine ve bulut metadata endpoint'lerine ulaşabilir.
- Naif engelleme listeleri alternatif IP biçimleri, DNS hileleri ve yönlendirmelerle aşılır.
- Hedefleri izin listesine alın, çözümlenen IP adreslerini doğrulayın ve özel aralıkları engelleyin.
- CSRF kullanıcının tarayıcısını, SSRF ise sunucunun kendisini istismar eder.
Örnek
const ALLOWED_HOSTS = new Set(["images.example-cdn.com"]);
async function fetchUserImage(rawUrl) {
const url = new URL(rawUrl); // throws on malformed input
// Vulnerable version: return fetch(rawUrl), which lets a user
// request http://169.254.169.254/ or http://localhost:6379/
if (url.protocol !== "https:" || !ALLOWED_HOSTS.has(url.hostname)) {
throw new Error("destination not allowed");
}
// Refuse redirects, which could bounce the request to an internal host
return fetch(url, { redirect: "error" });
}Sık sorulan sorular
SSRF ile CSRF arasındaki fark nedir?
CSRF, kurbanın tarayıcısını, kurbanın oturum açtığı bir siteye sahte bir istek göndermeye kandırır. SSRF ise bir sunucuyu saldırgan adına istek göndermeye kandırır; bu da saldırganın yalnızca o sunucunun erişebildiği sistemlere ulaşmasını sağlar.
SSRF bulutta neden tehlikelidir?
Bulut sunucuları çoğunlukla, makinenin bulut rolü için geçici kimlik bilgileri döndüren dahili bir metadata servisine erişebilir. Bir saldırgan sunucunun bu adrese istek yapmasını ve yanıtı okumasını sağlayabilirse depolamaya, veritabanlarına ve diğer bulut kaynaklarına erişim kazanabilir.
SSRF nasıl önlenir?
Yalnızca şeması ve host'u izin listesinde olan URL'leri çekin, çözümlenen IP adresini özel ve dahili aralıklara karşı denetleyin ve yönlendirmeleri körü körüne izlemeyin. Sunucudan dahili alt ağlara giden trafiği engellemek gibi ağ düzeyindeki kontroller ikinci bir katman ekler.
İlgili sayfalar
- CSRFGüvenlik, s. 5CSRF, oturum açmış kullanıcının tarayıcısını güvenilir bir siteye istenmeyen istek göndermeye kandıran, sitenin de gerçek kullanıcı eylemi sandığı saldırıdır.
- Girdi DoğrulamaGüvenlik, s. 11Girdi doğrulama, programa giren verinin kullanılmadan önce beklenen türde, biçimde ve aralıkta olup olmadığını kontrol etme ve gerisini reddetme pratiğidir.
- OWASP Top 10Güvenlik, s. 25OWASP Top 10, kâr amacı gütmeyen OWASP'nin yayımlayıp düzenli güncellediği, web uygulamalarındaki en kritik on güvenlik riskini sıralayan yaygın bir listedir.
- Bulut BilişimDevOps ve Bulut, s. 5Bulut bilişim, sunucu, depolama ve veritabanı gibi bilişim kaynaklarının internet üzerinden, kullandığın kadar öde modeliyle talep üzerine sunulmasıdır.
- WebhookBackend ve API'ler, s. 47Webhook, bir uygulamanın, tamamlanan bir ödeme gibi belirli bir olay gerçekleştiği anda sizin verdiğiniz bir URL'ye otomatik olarak gönderdiği HTTP isteğidir.
- Zero TrustGüvenlik, s. 49Zero trust, varsayılan olarak hiçbir kullanıcı, cihaz veya ağa güvenmeyip her isteği kimliğe, cihaz sağlığına ve bağlama göre doğrulayan güvenlik modelidir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin