Yapay Zeka Destekli AuthZ İncelemesi: Ory Kratos'ta İzin Sınırlarını Okumak
Yapay zeka hata bulma konusunda kötüdür ancak şüphe uyandırma konusunda harikadır.
Güvenlikte, bir yapay zekanın yapabileceği en ucuz şey, bir yığın yanlış rapor oluşturmaktır. Bug bounty (hata ödül) programlarının kuralları duraklatmasının veya sıkılaştırmasının nedeni budur.
Ben yapay zekayı farklı kullanıyorum. Yapay zekanın, kendi AuthZ Koku Kataloğuma (AuthZ Smell Catalog) dayanarak aşırı miktarda hipotez üretmesine izin veriyorum. Sonra, zor işi ben yapıyorum. Benim işim bu hipotezleri çürütmek.
Başarılı bir inceleme bir hata listesi değildir. Testten geçemeyen fikirlerin bir çürütme tablosudur.
Ory Kratos kaynak kodunu inceledim. Kratos, kimlik ve kullanıcı yönetimini üstlenir. Birden fazla kimlik ve genel (public) API'ler kullandığı için yüksek riskli bir alandır.
Beş hipotezi test ettim:
- H1: Admin API kod içerisinde yetkilendirmeye sahip değil.
- H2: Kimlikler arası veya tenant'lar arası veri sızıntıları.
- H3: Kurtarma akışlarında token'ın yeniden kullanılması.
- H4: Ayarlar akışlarında kimlik karmaşası.
- H5: İstek yükleri (payload) aracılığıyla tenant ataması.
Sonuçlar:
- H1: ÇÜRÜTÜLDÜ. Yetkilendirme kod işleyicisinde (handler) değil, ağ sınırında gerçekleşiyor. Bu, tasarım gereği böyledir.
- H2: ÇÜRÜTÜLDÜ. Merkezi bir veri erişim katmanı, tüm sorguları tenant ID'sine göre filtreler. Kullanıcılar bunu atlayamaz.
- H3: ÇÜRÜTÜLDÜ. Token'lar tek kullanımlıktır ve zaman sınırlıdır.
- H4: ÇÜRÜTÜLDÜ. Akışlar kullanıcı girdisine değil, oturuma (session) bağlıdır.
- H5: ÇÜRÜTÜLDÜ. Tenant ID'leri istek gövdesinden (request body) değil, sistem bağlamından (system context) gelir.
Beş hipotez girildi. Sıfır bulgu çıktı. Bu, başarılı bir incelemedir.
Güvenlik çalışmalarınız için iki ders:
Dağıtım katmanı (deployment-layer) güvenliği, güvenlik eksikliği gibi görünebilir. Eğer bir koruma ağ seviyesinde bulunuyorsa, kod çıplak görünecektir. Mimarinin kontrolünü yapana kadar bunu raporlamayın.
Darboğazı (chokepoint) bulun. Eğer bir sistem sınırları veri katmanında uyguluyorsa, münferit işleyicilerin (handler) kontrole ihtiyacı yoktur. "Bu işleyici izinleri kontrol ediyor mu?" diye sormak yerine, "Herhangi biri darboğazı aşmadan veriye ulaşabilir mi?" diye sorun.
Adayları elemek için yapay zekayı kullanın. Hayatta kalanları doğrulamak için insanları kullanın. Değer, eleme sürecindedir.
İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi
