Broken Access Control
Bozuk Erişim Kontrolü (Broken Access Control), bir web uygulamasında kullanıcıların izinleri dışında kaynaklara erişmelerine izin veren güvenlik zayıflığıdır. Bu tür bir güvenlik açığı, yetkisiz kullanıcıların sistem içindeki kaynaklara erişim sağlamasına veya yetkilendirilmiş kullanıcıların normal yetki düzeylerinin ötesine geçmesine imkan tanır. Yetkilendirme ve oturum yönetimi mekanizmalarının yetersizliği genellikle bu tür zayıflıkların temel nedenlerindendir. Bu makalede, bozuk erişim kontrolü güvenlik açığı üzerine temel kavramlar, türleri, zafiyet örnekleri ve korunma yolları ele alınacaktır.
Temel Kavramlar
Bozuk erişim kontrolü, kimlik doğrulama, oturum yönetimi ve erişim kontrolü gibi temel kavramları içerir.
Kimlik Doğrulama (Authentication):
Kullanıcıların kimliklerini doğrulamak ve onlara erişim izinleri sağlama sürecidir. Örneğin, kullanıcının adını ve şifresini girmesiyle gerçekleşir.
Oturum Yönetimi (Session Management):
Kullanıcıların uygulama içinde oturum açtıktan sonra bu oturumu koruma ve yönetme sürecidir. Oturum yönetimi, kullanıcının uygulama içinde gezinirken oturumunun geçerli olmasını sağlar.
Erişim Kontrolü (Access Control):
Kimlik doğrulaması ve oturum yönetimi sonrasında kullanıcılara tanınan yetkileri kontrol etmek için kullanılır. Kullanıcının belirli eylemleri gerçekleştirip gerçekleştiremeyeceğini belirler.
Erişim Kontrolü Türleri
Erişim kontrolü çeşitli türleri içerir, bunlar arasında:
Dikey Erişim Kontrolü (Vertical Access Control)
Dikey erişim kontrolü, kullanıcıların belirli bir rol veya pozisyonlarına bağlı olarak belirli kaynaklara erişimini kontrol eder. Örneğin, bir yönetici belirli işlevlere, bir kullanıcı ise sınırlı işlevlere erişebilir.
Yatay Erişim Kontrolü (Horizontal Access Control)
Yatay erişim kontrolü, kullanıcıların kendi rolleri dışındaki kullanıcıların kaynaklarına erişimini kontrol eder. Bu durumda, bir kullanıcı başka bir kullanıcının kaynaklarına izinsiz erişemez.
Bağlamına Bağlı Erişim Kontrolü (Context-Dependent Access Control)
Bağlamına bağlı erişim kontrolü, kullanıcının erişim izinlerini çeşitli bağlamlara (zaman, konum, durum) bağlı olarak değiştirebilir. Örneğin, belirli bir saat aralığında veya belirli bir konumda erişime izin vermek.
Bozuk erişim kontrolü Zafiyet Türleri
Bozuk erişim kontrolü zafiyet türleri arasında:
Dikey Ayrıcalık Yükseltme
Bu zafiyet, bir kullanıcının kendi rolünü yükselterek daha fazla ayrıcalık elde etmesine izin verir. Örneğin, bir normal kullanıcının yönetici işlevselliğine erişmesi.
Yatay Ayrıcalık Yükseltme
Bu zafiyet, bir kullanıcının normalde aynı düzeyde veya benzer ayrıcalıklara sahip başka bir kullanıcının kaynaklarına erişmesine veya onun gibi davranmasına izin verir.
Çok Adımlı İşlemlerde Erişim Kontrolü Zafiyetleri
Bazı durumlarda, bir dizi adımdan oluşan işlemlerde erişim kontrolleri eksik olabilir ve kullanıcılar beklenmedik kaynaklara erişebilir.
Örnek Zafiyetler
Bozuk erişim kontrolü zafiyetlerine örnekler arasında:
1. Parametrelerin URL veya HTML Sayfasında Değiştirilmesi
Kötü niyetli bir kullanıcı, URL'deki parametreleri değiştirerek başka bir kullanıcının verilerine erişebilir.
2. API'ye Erişimde Kontrollerin Eksik Olması
Uygulama programlama arayüzüne (API) yapılan isteklerde erişim kontrolleri eksikse, yetkisiz erişim mümkün olabilir.
3. JSON Web Token veya Çerezlerin Manipülasyonu
Kullanıcı tarafından düzenlenen JWT veya çerezler aracılığıyla yetki bilgilerini değiştirmek.
4. Cross-Origin Resource Sharing (CORS) Yanlış Yapılandırmalarının Sömürülmesi
CORS hatalı yapılandırıldığında, saldırganlar tarayıcı üzerinden başka bir alan adındaki kaynaklara erişebilir.
5. Kimlik Doğrulamasız Kullanıcı Olarak Güçlü Gözatma
Kimlik doğrulama yapılmamış bir kullanıcının yetkili bir kullanıcı gibi davranmasına olanak tanıyan zafiyetler.
Broken Access Control'dan Korunma Yolları
Web uygulamalarını bozuk erişim kontrolü zafiyetlerinden korumak için şu önlemler alınmalıdır:
Güçlü kimlik doğrulama ve oturum yönetimi uygulamak.
En az ayrıcalık ilkesini benimsemek.
Erişim kontrollerini düzenli testleri ve güncellemeleri gerçekleştirmek.
Güvenli kodlama uygulamalarını kullanmek.
Güvenlik güncellemelerini takip etmek ve yüklemek.
Ek Kaynaklar
Last updated