IDOR nedir?
IDOR (Insecure Direct Object Reference, güvensiz doğrudan nesne referansı), uygulamanın bir kaydı yalnızca istekteki kimliğe bakarak getirmesi ve bu kaydın istek sahibine ait olup olmadığını denetlememesi durumunda ortaya çıkan yetkilendirme açığıdır. Saldırgan /fatura?id=1001 adresini 1002 yaparak başkasının faturasını görebilir.
Açık, giriş yapmış sıradan bir kullanıcı tarafından bile sömürülebilir. Parola kırmak ya da kod enjekte etmek gerekmez; yalnızca bir sayıyı, kullanıcı adını veya dosya adını değiştirmek yeterlidir. Bu yüzden otomatik tarayıcılar tarafından zor bulunur ve genellikle elle yapılan testlerde ortaya çıkar.
Nasıl çalışır?
Uygulama oturumun geçerli olduğunu doğrular ama istenen nesnenin o oturumun sahibine ait olup olmadığını sorgulamaz. Kimlik doğrulama vardır, yetkilendirme eksiktir. Saldırgan sıralı sayıları, tahmin edilebilir dosya adlarını ve API uç noktalarındaki kimlik alanlarını deneyerek veri toplar.
Kimlik URL yolunda, sorgu parametresinde, form alanında ya da JSON gövdesinde olabilir. Yalnızca okuma değil, PUT ve DELETE istekleriyle başkasının kaydını değiştirmek veya silmek de mümkün olur.
Sunucu ve hosting ortamında
Müşteri paneli, sipariş ekranı, destek talebi sistemi, dosya indirme bağlantıları ve mobil uygulama API'leri IDOR'un en sık görüldüğü yerlerdir. Paylaşımlı hostingde bir sitedeki bu açık, başka müşterilerin faturalarını ya da yedek dosyalarını ifşa edebilir. Web sunucusu günlüklerinde aynı IP'den art arda artan kimliklerle gelen istekler tipik bir göstergedir.
WAF bu açığı tek başına yakalayamaz; çünkü istekler biçimsel olarak geçerlidir. Çözüm uygulama mantığında yapılmalıdır.