Bu makalede, web uygulamalarında ve API'lerde sıkça karşılaşılan "IDOR" (Insecure Direct Object References) zafiyeti ele alınmaktadır. Zafiyetin tanımı, tespit yöntemleri, etkileri ve nasıl önlenebileceği gibi konular detaylı olarak açıklanmıştır.
Bu makalede, web uygulamalarında ve API'lerde sıkça karşılaşılan "IDOR" (Insecure Direct Object References) zafiyeti ele alınmaktadır. Zafiyetin tanımı, tespit yöntemleri, etkileri ve nasıl önlenebileceği gibi konular detaylı olarak açıklanmıştır.
IDOR, "Insecure Direct Object References" yani "Güvensiz Doğrudan Nesne Referansı" anlamına gelir. Bu zafiyetin temel nedeni, kullanıcıların erişmeye çalıştıkları nesneler üzerinde uygun şekilde yetkilendirme kontrollerinin uygulanmamasıdır.
Kısaca, bir kullanıcının erişmek istediği nesneye ait kimliğin (ID) doğrulanmaması sonucunda başka kullanıcıların verilerine erişim sağlanabilmektedir. Erişilen nesneye göre zafiyetin etkisi değişiklik gösterebilir.
IDOR zafiyeti, hem dikey hem de yatay yetkilendirme ihlallerine neden olabilir. Bu iki durumu örneklerle inceleyelim:
Dikey Yetki İhlali Örneği:
Bir kullanıcı yalnızca kendi hesabına erişebilmelidir. Ancak IDOR zafiyeti bulunan bir uygulamada, aynı kullanıcı bir sistem yöneticisinin hesabına erişim sağlayabilir.

Burada sistem yöneticisinin kullanıcı ayarları, mesaj düzenleme ve silme gibi yetkileri de erişilebilir hale gelir.

Yatay Yetki İhlali Örneği:
Bir kullanıcı, sahip olduğu yetki seviyesi ile sadece kendi verilerine erişebilmelidir. Ancak zafiyet durumunda başka kullanıcıların dosyalarına, klasörlerine veya verilerine erişim sağlanabilir.

Bu tür bir zafiyet, yalnızca URL parametrelerinde değil; istek gövdelerinde, dosya yollarında, çerezlerde veya diğer istemci taraflı değişkenlerde de bulunabilir.

Güvensiz Yaklaşım:
Kullanıcı doğrudan /download/file_id adresine GET isteği gönderir.

Güvenli Yaklaşım:

Bu zafiyetin istismarı görece kolay olsa da, tespit edilmesi genellikle manuel testlerle mümkündür. Otomatik tarama araçları çoğu zaman IDOR zafiyetlerini atlayabilir. Bu nedenle, uygulamanın işleyiş yapısını anlamaya yönelik detaylı manuel testler büyük önem taşır.
Test süreci, uygulamaya yapılan çok sayıda istek-yanıt döngüsüyle gerçekleştirilir. Amaç, aynı kaynaklara farklı kullanıcılar tarafından erişim sağlanıp sağlanamayacağını gözlemlemektir.
IDOR zafiyetinin etkileri, erişilen verinin hassasiyetine ve yetki düzeyine göre ciddi sonuçlar doğurabilir:
IDOR zafiyeti, uygun şekilde yapılandırılmamış erişim kontrolleri nedeniyle ciddi güvenlik açıklarına yol açabilir. Bu tür zafiyetlerin önlenmesi için güvenli yazılım geliştirme ilkelerine uyulmalı ve erişim kontrolleri kodun her seviyesinde titizlikle uygulanmalıdır. Ayrıca uygulamaların düzenli olarak manuel ve otomatik güvenlik testlerine tabi tutulması, bu zafiyetlerin erken tespit edilmesinde kritik rol oynar.