Broken Access Control Nedir ve Nasıl Tespit Edilir?
Broken Access Control Nedir?
Broken Access Control (Türkçe'ye "Bozuk Erişim Denetimi" olarak çevrilebilir), bir web uygulamasının kullanıcıların yalnızca yetkili oldukları verilere ve işlemlere erişebilmesini garanti edemediği durumları tanımlar. Basitçe söylemek gerekirse: bir kullanıcı normalde göremeyeceği bir sayfaya, dosyaya veya başka bir kullanıcının verisine erişebiliyorsa, orada bir erişim kontrolü açığı vardır.
Bu açık türü, OWASP Top 10 listesinde yıllardır en kritik güvenlik risklerinin başında geliyor. Nedeni basit: erişim kontrolü mantığı genellikle her sayfa, her API uç noktası ve her işlem için ayrı ayrı düşünülüp uygulanmalı. Tek bir eksik kontrol, tüm sistemin güvenliğini zayıflatabilir.
Neden Bu Kadar Yaygın ve Tehlikeli?
Erişim kontrolü hataları, SQL enjeksiyonu gibi klasik güvenlik açıklarının aksine genellikle karmaşık bir teknik saldırı gerektirmez. Saldırgan çoğu zaman sadece bir URL'deki ID numarasını değiştirir, bir API isteğini tekrar gönderir veya tarayıcı geliştirici araçlarıyla gizlenmiş bir menü öğesine erişmeye çalışır.
Bu basitlik, aynı zamanda açığın tehlikesini artırır. Özel bir araç ya da derin teknik bilgi gerekmediği için, kötü niyetli biri tesadüfen bile bu tür bir zafiyeti fark edip kötüye kullanabilir. KOBİ'ler için bu durum özellikle risklidir çünkü sınırlı geliştirme ekipleri, her yeni özellik eklendiğinde yetkilendirme kontrollerini tutarlı biçimde uygulamayı gözden kaçırabilir.
Broken Access Control Türleri
Dikey Yetki Yükseltme (Vertical Privilege Escalation)
Normal bir kullanıcının, yönetici (admin) paneline veya yönetici işlevlerine erişim sağlaması bu kategoriye girer. Örneğin bir müşteri hesabıyla giriş yapan biri, /admin/kullanicilar gibi bir yola doğrudan URL yazarak erişim sağlayabiliyorsa, yetkilendirme kontrolü sunucu tarafında değil sadece arayüzde uygulanmıştır.
Yatay Yetki Yükseltme (Horizontal Privilege Escalation)
Burada kullanıcı kendi yetki seviyesinde kalır ama başka bir kullanıcının verisine erişir. Örneğin bir sipariş takip sayfasında siparis.php?id=1024 linkindeki numarayı 1025 yaparak başka bir müşterinin siparişini görüntüleyebilmek, tipik bir yatay erişim ihlalidir.
IDOR (Insecure Direct Object Reference)
Güvensiz doğrudan nesne referansı, yukarıdaki örnekte olduğu gibi veritabanı kimliklerinin (ID) tahmin edilebilir ve kontrolsüz biçimde parametre olarak kullanılmasıyla ortaya çıkar. Fatura numaraları, kullanıcı ID'leri veya dosya adları bu şekilde açığa çıkabilir.
Zorla URL/Parametre Erişimi (Forced Browsing)
Bazı sayfalar arayüzde gizlenir ama sunucu tarafında hâlâ erişilebilir durumda kalır. Menüden kaldırılmış eski bir rapor sayfası veya test ortamında unutulmuş bir yönetim aracı, doğrudan URL bilindiğinde hâlâ çalışabilir.
Web Sitenizde Broken Access Control Nasıl Tespit Edilir?
Manuel Test Yöntemleri
En basit yöntem, farklı yetki seviyelerinde iki test hesabı oluşturup birinin gördüğü her URL'yi ve API isteğini diğer hesapla denemektir. Tarayıcının geliştirici araçlarında ağ (network) sekmesini açarak arka planda hangi API çağrılarının yapıldığını görebilir, bu istekleri farklı kullanıcı kimlikleriyle tekrar gönderebilirsiniz. Bu tür denemeler yalnızca kendi sisteminizde ve yetkilendirilmiş güvenlik testi kapsamında yapılmalıdır.
Otomatik Tarama Araçları
Manuel test zaman alıcıdır ve her yeni güncellemede tekrarlanması pratik değildir. Otomatik güvenlik tarama araçları, sitenizdeki uç noktaları keşfederek yetkilendirme mantığındaki tutarsızlıkları daha hızlı ortaya çıkarabilir. Ücretsiz bir tarama ile sitenizin dışarıdan görünen zayıf noktalarını ilk adımda görebilirsiniz. Daha kapsamlı ve sürekli izleme ihtiyacı olan ekipler için DeepScan gibi çözümler, erişim kontrolü dahil birçok açık kategorisini düzenli olarak tarar.
Kod İncelemesi ve Yetkilendirme Matrisi
Teknik ekibiniz varsa, her endpoint için "kim erişebilir" sorusunu net biçimde tanımlayan bir yetkilendirme matrisi hazırlamak faydalı olur. Kod incelemelerinde her yeni API veya sayfa eklendiğinde bu matrise uygunluk kontrol edilmelidir. Yetkilendirme kontrolünün sunucu tarafında yapıldığından, sadece istemci (frontend) tarafında gizlenmediğinden emin olun.
Tespit Edildiğinde Ne Yapmalı?
Bir erişim kontrolü açığı bulduğunuzda öncelik, sorunun kapsamını anlamaktır: Hangi veriler, kaç kullanıcı etkileniyor? Ardından düzeltme genellikle sunucu tarafında merkezi bir yetkilendirme katmanı eklemek veya mevcut kontrolleri güçlendirmek şeklinde olur. Düzeltmeden sonra aynı senaryoyu tekrar test ederek gerçekten kapatıldığından emin olunmalı; çünkü kısmi düzeltmeler bazen açığı sadece görünmez hale getirir, ortadan kaldırmaz.
Sürekli Güvenlik Neden Tek Seferlik Testten Daha Önemli?
Web siteleri sürekli değişir: yeni özellikler eklenir, üçüncü taraf entegrasyonları yapılır, ekip üyeleri değişir. Bir yıl önce güvenli olan bir yetkilendirme mantığı, eklenen yeni bir API uç noktasıyla birlikte kolayca kırılabilir. Bu yüzden erişim kontrolü denetimi, bir defalık bir proje değil, geliştirme sürecinin sürekli bir parçası olmalıdır.
KOBİ'ler için düzenli bütçeyle sürekli izleme sağlayan yapılar, tek seferlik pahalı denetimlerden genellikle daha sürdürülebilir sonuç verir. İşletmenizin büyüklüğüne uygun bir izleme sıklığı belirlemek için fiyatlandırma seçeneklerini inceleyebilirsiniz.
Sık Sorulan Sorular
Broken Access Control ile SQL enjeksiyonu arasındaki fark nedir?
SQL enjeksiyonu veritabanı sorgularının kötüye kullanılmasıyla ilgilidir, Broken Access Control ise yetkilendirme mantığının eksik veya hatalı uygulanmasıyla oluşur. İkisi farklı katmanlarda ortaya çıkar ve genellikle farklı test yöntemleri gerektirir.
IDOR açığı hangi tür sitelerde daha sık görülür?
Kullanıcıya özel içerik gösteren e-ticaret, fatura yönetimi, CRM ve müşteri portalı gibi sistemlerde ID tabanlı erişim sık kullanıldığından IDOR riski daha yüksektir. Özellikle sıralı veya tahmin edilebilir kimlik numaraları kullanan uygulamalar risk altındadır.
Küçük bir web sitesi de bu açıktan etkilenebilir mi?
Evet, erişim kontrolü hataları site büyüklüğüne bakmaksızın ortaya çıkabilir. Küçük ekipler genellikle her yeni özellik için yetkilendirme testini atladığından, KOBİ siteleri bu tür açıklara karşı özellikle dikkatli olmalıdır.
Erişim kontrolü testini kendim mi yapmalıyım yoksa uzmana mı danışmalıyım?
Temel manuel testleri teknik ekibiniz yapabilir, ancak kapsamlı ve düzenli kontrol için otomatik tarama araçları veya yetkilendirilmiş güvenlik testi hizmeti almak daha güvenilir sonuç verir. Karmaşık yetkilendirme yapıları için uzman değerlendirmesi önerilir.
Broken Access Control açığını tamamen ortadan kaldırmak mümkün mü?
Riski önemli ölçüde azaltmak mümkündür ancak sürekli değişen bir uygulamada 'tamamen ortadan kaldırıldı' demek gerçekçi değildir. Düzenli test, kod incelemesi ve merkezi yetkilendirme kontrolleriyle risk sürekli düşük seviyede tutulabilir.
Sitenizin güvenlik durumunu merak mı ediyorsunuz?
60 saniyede ücretsiz Quick Scan yapın, Quick Score'unuzu görün. Kayıt gerekmez.
Ücretsiz tara