Açık yönlendirme nedir?
Açık yönlendirme (open redirect), bir web uygulamasının kullanıcıyı gittiği adresi doğrulamadan, istekteki bir parametreye göre başka bir siteye yönlendirmesidir. Saldırgan güvenilir bir alan adının bağlantısını hazırlar, ama tıklayan kişi sonunda saldırganın sayfasına düşer.
Tek başına veri sızdırmaz; asıl riski güven aktarımıdır. Kullanıcı bağlantının başında tanıdığı alan adını görür ve tıklar. E-posta filtreleri de alan adı itibarlı olduğu için bağlantıyı geçirebilir.
Nasıl çalışır?
Tipik örnek, giriş sonrası dönüş adresini taşıyan ?next= ya da ?redirect= parametresidir. Uygulama bu değeri olduğu gibi Location başlığına yazarsa, parametreye dış bir adres verilerek kullanıcı oradan çıkarılır.
Sahte bir giriş sayfasına yönlendirme, kimlik bilgilerini çalmanın yaygın yoludur. OAuth akışlarında yönlendirme adresi gevşek doğrulanırsa yetkilendirme kodu veya erişim belirteci saldırgana ulaşabilir; bu yüzden açık yönlendirme bazen daha ciddi açıklara zincirlenir.
Sunucu ve hosting ortamında
WordPress eklentileri, tek oturum açma (SSO) sayfaları, kısa bağlantı servisleri, login.php?return= gibi özel betikler ve izleme bağlantıları sık görülen kaynaklardır. Web sunucusunda Redirect ya da RewriteRule kurallarını kullanıcı girdisine bağlarsanız aynı hatayı yapılandırma düzeyinde de üretebilirsiniz.
Alan adı itibarınız da risk altındadır: marka adınızla dolaşan sahte bağlantılar spam listelerine girmenize yol açabilir.
Nasıl korunulur?
- Yönlendirme hedeflerini izin listesiyle (allowlist) sınırlayın; yalnızca bilinen alan adlarına veya iç yollara izin verin.
- Mümkünse hedef adres yerine kısa bir kimlik kullanın ve sunucuda eşleştirin.
- Yalnızca göreli yollara izin verin ve
//ile başlayan ya da şema içeren değerleri reddedin. - Dış bağlantı gerekiyorsa kullanıcıya “siteden ayrılıyorsunuz” ara sayfası gösterin.
- OAuth ve SSO'da
redirect_urideğerini tam eşleşmeyle doğrulayın. - Güvenlik taramalarınıza açık yönlendirme kontrolünü ekleyin.
Sık yapılan hatalar
- Yalnızca alan adının içinde kendi adresinizin geçip geçmediğine bakmak;
siteniz.com.kotu.examplegibi adresler bunu aşar. - Doğrulamayı kodlama öncesi yapıp sonrasında farklı yorumlanan değerleri gözden kaçırmak.
- Açığı düşük riskli sayıp kapatmamak.
- Kısa bağlantı ve izleme servislerinde hedefi serbest bırakmak.
Sık sorulan sorular
Açık yönlendirme gerçekten tehlikeli mi?
Doğrudan sunucuyu ele geçirmez ama kimlik avı ve OAuth belirteç hırsızlığı için çok işe yarar. Güvenilir alan adınız saldırganın aracına dönüşür.
WAF açık yönlendirmeyi engeller mi?
Kısmen, bilinen kalıpları yakalayabilir. Kalıcı çözüm uygulamanın hedefi doğrulamasıdır.
Hedef adresi tamamen kaldırabilir miyim?
Evet, en güvenli yol budur. Sabit bir sayfaya ya da sunucuda saklanan bir hedefe yönlendirin, kullanıcıdan gelen adresi hiç kullanmayın.
İlgili terimler
- Alt alan adı ele geçirme (subdomain takeover)Artık kullanılmayan bir hizmete işaret eden DNS kaydı üzerinden alt alan adının saldırganca sahiplenilmesi.
- APT (Gelişmiş kalıcı tehdit)Uzun süre fark edilmeden hedefte kalan, kaynakları güçlü saldırı grupları.
- Arabellek taşması (buffer overflow)Programın ayrılan bellek alanının dışına yazması.
- Arka kapı (backdoor)Saldırganın sisteme sonradan gizlice yeniden girmesini sağlayan mekanizma.
- BotnetUzaktan yönetilen, ele geçirilmiş cihazlar ağı.
- ClickjackingKullanıcıyı farkında olmadan görünmez bir öğeye tıklatmak.