Genel Bakış
Bozuk Erişim Kontrolü, OWASP Top 10 (2021) listesinin 1. sırasında yer almakta ve test edilen uygulamaların %94'ünde tespit edilmektedir. Bu kategori, bir sistemin kullanıcıların hangi işlemleri gerçekleştirebileceğini veya hangi verilere erişebileceğini doğru biçimde kısıtlayamaması durumlarının tamamını kapsamaktadır. Kimlik doğrulama hataları (kullanıcının kim olduğu) ile karşılaştırıldığında, erişim kontrolü hataları kimliği doğrulanmış —hatta doğrulanmamış— kullanıcıların ne yapmasına izin verildiğini ele alır.
Erişim kontrolü zafiyetleri; yatay yetki yükseltme (aynı yetki seviyesindeki başka bir kullanıcının verilerine erişme) ile dikey yetki yükseltme (yönetici ya da daha yüksek yetkili işlevlere erişme) arasında uzanmakta; kimliği doğrulanmamış kullanıcıların korumalı uç noktalara tamamen ulaşmasını da kapsamaktadır.
Nasıl çalışır?
Erişim kontrolü zafiyetleri, sunucu tarafı yetkilendirme mantığının eksik, yetersiz ya da tutarsız biçimde uygulanmasından kaynaklanır. Yaygın örüntüler şunlardır:
- Güvensiz Doğrudan Nesne Referansı (IDOR):
GET /api/faturalar/4821gibi bir API uç noktası, isteği yapan kullanıcının söz konusu faturaya sahip olup olmadığını doğrulamadan yalnızca kullanıcının sağladığı kimliğe göre veri döndürür. Saldırgan kimlikleri numaralandırarak diğer kullanıcılara ait kayıtlara erişir. - Zorla gezinme (Forced Browsing): Sunucu, yalnızca arayüzde bağlantıları gizlediği için hassas sayfalar (örn.
/admin/dashboard,/raporlar/disa-aktar) doğrudan URL gezintisiyle ulaşılabilir durumdadır; sunucu tarafında yetkilendirme uygulanmamaktadır. - İşlev düzeyinde eksik erişim kontrolü: Sıradan bir kullanıcı, rol denetimi içermeyen bir yönetici API uç noktasını (örn.
DELETE /api/kullanicilar/:id) keşfeder ve başarıyla çağırabilir. - İstemci tarafı erişim kontrolü: Yetkilendirme kararları, istemcinin değiştirebileceği gizli form alanlarına, JavaScript bayraklarına ya da JWT taleplerine dayanır (örn. imzasız veya zayıf imzalı bir token'da
"rol":"kullanici"değerini"rol":"admin"olarak değiştirmek). - CORS yanlış yapılandırması: Aşırı izin verilen Çapraz Kaynak Paylaşımı (CORS) politikaları, kötü amaçlı üçüncü taraf sitelerin kimlik bilgili istekler göndermesine olanak tanır.
- Yol geçişiyle erişim kontrolü atlatma:
/admin/../kullanici/profilgibi URL manipülasyonu, yalnızca değişmez yol ön ekini denetleyen ara yazılımı atlatır. - Meta veri manipülasyonu: Sunucu kriptografik doğrulama yapmadan güvendiğinde çerezlerin, JWT token'larının veya erişim düzeyini kontrol eden istek parametrelerinin kurcalanması.
İş etkisi
Bozuk erişim kontrolünün başarıyla istismar edilmesi ciddi ve çok boyutlu sonuçlar doğurabilir:
- Veri ihlali: Saldırganlar, diğer kullanıcılara veya kuruma ait kişisel tanımlayıcı bilgileri (PII), finansal kayıtları, sağlık verilerini ya da fikri mülkiyeti sızdırabilir.
- Veri manipülasyonu veya silme: Yetki yükseltme, kayıtların, yapılandırmaların veya kullanıcı hesaplarının değiştirilmesine ya da geri alınamaz biçimde silinmesine yol açabilir.
- Hesap ele geçirme: Yeterli denetim olmadan açığa çıkan yönetici işlevleri, saldırganların herhangi bir hesabın şifresini sıfırlamasına, e-posta adresini değiştirmesine ya da çok faktörlü kimlik doğrulamayı devre dışı bırakmasına olanak tanır.
- Yasal ve düzenleyici yükümlülük: Kullanıcı verilerinin ifşası, GDPR, HIPAA, PCI-DSS ve benzeri düzenlemeleri ihlal ederek önemli mali cezalara ve zorunlu ihlal bildirimlerine neden olabilir.
- İtibar kaybı: Erişim kontrolü hatalarından kaynaklanan bir veri ihlalinin kamuoyuna duyurulması, müşteri güvenini ve marka değerini zedeler; bu etki genellikle uzun süreli ticari sonuçlar doğurur.
Nasıl düzeltilir?
- Her istekte sunucu tarafında yetkilendirmeyi zorunlu kılın: Yalnızca arayüzde bağlantı veya düğme gizlemeye güvenmeyin. Her API uç noktası ve sunucu tarafında render edilen sayfa, veri döndürmeden veya eylem gerçekleştirmeden önce isteği yapan kullanıcının kimliğini ve yetkilerini bağımsız olarak doğrulamalıdır.
- Varsayılan reddetme politikası benimseyin: Açıkça izin verilmediği sürece erişim reddedilmelidir. Yeni uç noktalar ve kaynaklar, açık erişimi miras almak yerine pozitif izin onayları gerektirmelidir.
- Dolaylı nesne referansları veya GUID kullanın: Sıralı sayısal kimlikleri tahmin edilemez tanımlayıcılarla (örn. UUID) değiştirin ve herhangi bir referansı çözerken sunucuda sahipliği veya izni her zaman doğrulayın.
- Rol tabanlı veya nitelik tabanlı erişim kontrolü (RBAC/ABAC) uygulayın: İzinleri merkezi olarak özel bir yetkilendirme katmanında veya kütüphanesinde tanımlayın. Geçici rol denetimlerini kod tabanına dağıtmaktan kaçının.
- JWT token'larını titizlikle doğrulayın: Sunucu tarafından yönetilen güçlü imzalama anahtarları kullanın;
algbaşlığını doğrulayın;"alg":"none"içeren token'ları reddedin; hedef kitle ve son kullanma tarihi dahil tüm talepleri doğrulayın. - Erişim kontrolü hatalarını kaydedin ve uyarı oluşturun: Yetkilendirme redlerini kullanıcı kimliği, zaman damgası, kaynak ve eylemle birlikte kaydedin. Olağandışı örüntüler için (örn. tek bir kullanıcıdan tekrarlanan 403 yanıtları) uyarı sistemi kurun.
- Erişim kontrolü için otomatik testler yazın: Kullanıcıların başka kullanıcılara ait kaynaklara veya daha yüksek yetki düzeyindeki işlevlere erişemediğini doğrulayan entegrasyon ve regresyon testleri ekleyin. Bu testleri CI/CD süreçlerine dahil edin.
- CORS politikalarını gözden geçirin:
Access-Control-Allow-Origindeğerini yalnızca açıkça gereken kaynaklarla sınırlandırın; kimlik bilgili isteklerde asla*kullanmayın. - Düzenli erişim kontrolü incelemeleri yapın: Kod incelemelerinde izin matrislerini ve erişim kontrolü mantığını gözden geçirin; özellikle yeni özellik ekleme veya yeniden yapılandırmanın ardından üretim yapılandırmalarını periyodik olarak denetleyin.
Sensagraph, sürekli tarama sırasında açığa çıkan yönetici yolları, IDOR'a yatkın uç nokta örüntüleri ve aşırı izin verilen CORS yapılandırmaları dahil olmak üzere yaygın bozuk erişim kontrolü göstergelerini otomatik olarak tespit eder.
Kaynaklar
- OWASP Top 10 A01:2021 – Broken Access Control
- OWASP WSTG – Yetkilendirme Testi
- MITRE CWE-284: Hatalı Erişim Kontrolü
- MITRE CWE-285: Hatalı Yetkilendirme
- MITRE CWE-639: Kullanıcı Tarafından Kontrol Edilen Anahtar Yoluyla Yetkilendirme Atlatma (IDOR)
- OWASP Erişim Kontrolü Hızlı Başvuru Kılavuzu
- OWASP IDOR Önleme Hızlı Başvuru Kılavuzu
- PortSwigger Web Security Academy – Erişim Kontrolü