/

3 Şubat 2026

API1:2023 Broken Object Level Authorization

API1:2023 Broken Object Level Authorization

API’ler modern yazılım mimarilerinin merkezinde yer alır. Mikroservis yapıları, mobil uygulamalar ve üçüncü taraf entegrasyonlar sayesinde API’ler artık yalnızca veri sunan katmanlar değil, doğrudan iş süreçlerini yöneten kritik bileşenler hâline gelmiştir. Kullanıcı profilleri, siparişler, faturalar, hesaplar ve benzeri iş nesneleri API’ler aracılığıyla erişilir ve yönetilir.

Ancak bu mimarilerde en sık yapılan hatalardan biri, kimlik doğrulamanın (authentication) güvenlik için yeterli olduğunun varsayılmasıdır. Oysa API güvenliğinde asıl risk, kullanıcının kim olduğundan ziyade hangi nesnelere erişebildiği sorusunda gizlidir. OWASP API Top 10:2023 listesinin ilk sırasında yer alan API1: Broken Object Level Authorization (BOLA), tam olarak bu noktada ortaya çıkar.

Broken Object Level Authorization Nedir?

Broken Object Level Authorization, bir API’nin kullanıcıdan gelen nesne tanımlayıcılarını (ID, UUID, key vb.) işlerken bu nesnenin gerçekten ilgili kullanıcıya ait olup olmadığını doğrulamaması durumudur. Başka bir ifadeyle sistem, isteği yapan kullanıcının kim olduğunu doğrular; ancak bu kullanıcının erişmeye çalıştığı nesneye yetkili olup olmadığını kontrol etmez. Bu eksiklik, kimliği doğrulanmış bir kullanıcının yalnızca bir ID değerini değiştirerek başka kullanıcılara ait verilere erişebilmesine yol açar.

BOLA bu yönüyle sessiz bir zafiyettir. Çoğu zaman hata üretmez, log’larda olağan bir API isteği gibi görünür ve uzun süre fark edilmeden veri sızıntısına neden olabilir. Zafiyetin bu kadar yaygın olmasının temel nedenlerinden biri, authentication ve authorization kavramlarının pratikte birbirine karıştırılmasıdır. Birçok sistemde kullanıcı giriş yaptıysa, ilgili endpoint’e erişebileceği varsayılır. Oysa API’lerde yetkilendirme yalnızca endpoint seviyesinde değil, aynı zamanda nesne seviyesinde ele alınmalıdır. Kullanıcının bir endpoint’i çağırmaya yetkili olması, erişmeye çalıştığı nesnenin sahibi olduğu anlamına gelmez.

Endpoint erişimi doğru kurgulanmış olsa bile, nesne sahipliği kontrolü yapılmadığında Broken Object Level Authorization ortaya çıkar. Bu nedenle BOLA, kod incelemelerinde ve güvenlik testlerinde sıklıkla gözden kaçan ancak etkisi son derece yüksek olan zafiyetler arasında yer alır.

Yaygın BOLA Senaryoları ve Etkileri

Broken Object Level Authorization genellikle tahmin edilebilir ve tekrarlayan mimari hatalardan kaynaklanır. Artan sayısal ID’lerin kullanıldığı API’lerde /api/users/1001 veya /api/orders/45891 gibi endpoint’ler saldırgan için doğal bir hedef hâline gelir. Backend tarafında nesnenin ilgili kullanıcıya ait olup olmadığı kontrol edilmezse, saldırgan yalnızca ID’yi değiştirerek başka kullanıcıların verilerine erişebilir.

Bir diğer yaygın hata, nesne sahipliği bilgisinin client’tan gelen parametrelere güvenilerek belirlenmesidir. userId gibi alanların request body içinde alınması ve backend tarafından doğrulanmaması, BOLA için klasik bir giriş noktasıdır. Ayrıca “UI’da bu ID görünmüyor” varsayımı da sık yapılan bir hatadır. API’ler arayüzden bağımsız çalışır; saldırgan doğrudan API çağrısı yapar ve UI kısıtlamaları güvenlik sağlamaz.

BOLA yalnızca teknik bir zafiyet değil, doğrudan iş riskine dönüşen bir güvenlik problemidir. Yetkisiz veri erişimi, KVKK ve GDPR kapsamındaki kişisel verilerin ifşasına yol açabilir. Bunun yanında saldırganlar, başka kullanıcılar adına veri güncelleme veya silme işlemleri gerçekleştirebilir. Sessiz ilerlemesi nedeniyle BOLA kaynaklı ihlaller genellikle geç fark edilir ve bu durum hem regülasyon ihlallerini hem de marka itibarına verilen zararı büyütür.

BOLA riskini minimize etmek için API tasarımında nesne bazlı yetkilendirme bir standart hâline getirilmelidir. Her veri erişiminde, erişilen nesnenin authenticated kullanıcıya ait olup olmadığı doğrulanmalıdır. Bu kontroller yalnızca controller seviyesinde değil, servis veya domain katmanında merkezi şekilde uygulanmalıdır. Varsayılan yaklaşım deny by default olmalı; açıkça izin verilmedikçe erişim reddedilmelidir.

Ayrıca object-level erişimler log’lanmalı ve aynı kullanıcı tarafından ardışık veya olağandışı ID denemeleri anomali olarak değerlendirilmelidir. Bu noktada yalnızca test aşamasındaki kontroller yeterli değildir; runtime seviyesinde davranışsal analiz büyük önem taşır. Modern API security çözümleri, API trafiğini analiz ederek bu tür nesne bazlı yetkilendirme ihlallerini gerçek zamanlı olarak görünür kılabilir.

API1:2023 Broken Object Level Authorization, API güvenliğinde yapılan en temel ama aynı zamanda en yıkıcı hatalardan biridir. Kimliği doğrulanmış olmak, bir kaynağa erişim için tek başına yeterli değildir. API güvenliğinde asıl belirleyici olan, kullanıcının sisteme giriş yapmış olması değil; hangi verileri görüntülemeye, hangi işlemleri gerçekleştirmeye ve hangi nesneler üzerinde değişiklik yapmaya yetkili olduğunun doğru şekilde kontrol edilmesidir. Bu nedenle her API, nesne seviyesinde yetkilendirmeyi merkeze alan bütünsel bir güvenlik yaklaşımıyla tasarlanmalı ve bu kontroller yalnızca tasarım veya test aşamasında değil, runtime seviyesinde de sürekli olarak izlenmelidir.

Benzer İçerikler