~/sibercrew
Web Güvenliği

Kırık Erişim Kontrolü (Broken Access Control) Nedir?

OWASP Top 10 2021 listesinde 1 numaraya yükselen, en yaygın web güvenliği zafiyeti.

Kırık Erişim Kontrolü, OWASP Top 10 2021 listesinde ilk sıraya yerleşen ve test edilen uygulamaların büyük çoğunluğunda (OWASP'ın verilerine göre incelenen uygulamaların %94'ünde en az bir örneği) tespit edilen bir güvenlik zafiyeti kategorisidir. Temelde şunu ifade eder: bir kullanıcının, kendisine tanınan yetkinin dışına çıkarak veri, işlem veya kaynaklara erişebilmesi.

Erişim Kontrolü Ne Demek?

Bir uygulamada erişim kontrolü, "kimin, hangi kaynağa, hangi işlemi yapmak üzere erişebileceğini" belirleyen kurallar bütünüdür. Örneğin bir e-ticaret sitesinde normal bir müşteri sadece kendi siparişlerini görebilmeli, bir yöneticiyse tüm siparişleri görüp güncelleyebilmelidir. Erişim kontrolü "kırıldığında", bu sınırlar delinir.

Nasıl Çalışır? (Teknik Mekanizma)

Erişim kontrolü zafiyetleri genellikle iki temel hatadan doğar:

  1. Yatay yetki atlatma (IDOR - Insecure Direct Object Reference): Uygulama bir kaynağa erişirken sadece "bu ID'ye sahip bir kayıt var mı?" diye sorar, "bu kayıt gerçekten bu kullanıcıya mı ait?" diye sormaz.

  2. Dikey yetki atlatma (Privilege Escalation): Normal yetkili bir kullanıcının, yönetici seviyesinde işlem yapabilmesi. Bu genelde arayüzde bir butonun gizlenmesiyle "çözülmüş" sanılır, ama backend'de aynı endpoint'e doğrudan istek atıldığında hiçbir kontrol yoksa zafiyet devam eder.

Kod Örneği

Zafiyetli kod (Node.js/Express örneği):

javascript
app.get("/api/siparis/:id", async (req, res) => {
  const siparis = await Siparis.findById(req.params.id);
  res.json(siparis); // Kullanıcı kontrolü YOK
});

Güvenli hâli:

javascript
app.get("/api/siparis/:id", async (req, res) => {
  const siparis = await Siparis.findById(req.params.id);
  if (!siparis || siparis.kullaniciId !== req.user.id) {
    return res.status(403).json({ hata: "Yetkisiz erişim" });
  }
  res.json(siparis);
});

Pratik Senaryo

Ayşe, bir online eğitim platformuna kayıtlı bir öğrenci. Aldığı kursun sertifikasını görüntülemek için tarayıcıda şu adresi görüyor: platform.com/sertifika/8842. Meraktan sayı kısmını 8843 yaparak sayfayı yeniliyor ve karşısına başka bir öğrencinin adı, soyadı ve sertifika bilgisiyle dolu bir sayfa çıkıyor. Aslında hiçbir "hackleme" yapmadı; sadece URL'deki bir sayıyı değiştirdi. Sistem, sertifika kaydını getirirken "bu sertifika gerçekten bu oturumu açan kullanıcıya mı ait?" sorusunu hiç sormamıştı. Ayşe bunu fark edip platforma bildirdiğinde, aslında responsible disclosure'ın (sorumlu bildirim) tam da yapılması gereken şekilde yapıldığı bir an yaşanmış oluyor — zafiyeti kötüye kullanmak yerine bildirmek.

Gerçek Dünya Vakası

2019'da büyük bir ABD bankasının bulut altyapısında yaşanan veri ihlalinde, saldırgan yanlış yapılandırılmış bir web application firewall üzerinden iç sunucudaki meta veri servisine erişip yetki kazanmış, ardından erişim kontrolündeki eksiklikler sayesinde 100 milyondan fazla müşteri kaydına ulaşabilmişti.

Tespit Yöntemleri

  • Farklı yetki seviyelerinde iki test hesabıyla, her endpoint'i çapraz test etmek ("A kullanıcısının token'ıyla B kullanıcısının verisine erişebiliyor muyum?").
  • Otomatik güvenlik tarayıcılarının (Burp Suite Autorize eklentisi gibi) yetki matrisini otomatik test etmesini sağlamak.
  • Kod incelemesinde her veri erişim noktasında "sahiplik kontrolü" (ownership check) olup olmadığını aramak.

Nasıl Önlenir?

  • Yetki kontrollerini her zaman sunucu tarafında yapmak, istemci tarafındaki (arayüz) kontrollere asla güvenmemek.
  • Varsayılan olarak erişimi reddetmek, sadece açıkça izin verilen işlemlere izin vermek (deny by default / fail securely).
  • Merkezi bir yetkilendirme katmanı (middleware) kullanarak her endpoint'te tutarlı kontrol sağlamak.
  • Hassas işlemler için detaylı loglama yaparak şüpheli erişim denemelerini tespit edebilmek.
  • Rate limiting uygulayarak IDOR'un otomatik/toplu şekilde taranmasını zorlaştırmak.

Bu makale, OWASP Top 10 2021 listesindeki "A01:2021 – Broken Access Control" kategorisinin genişletilmiş Türkçe özetidir.