API Sızma Testi: Kimlikli Akışlar ve İş Mantığı
OpenAPI/Swagger, kimlik/claim analizi, rate limit ve IDOR testleri; otomasyon ve profil önerileri.
Kısaca
- OpenAPI/Swagger keşfi ile kapsam netleştirilir, kör noktalar azalır.
- Token/claim doğrulama ve yetki kontrolleri (IDOR, mass assignment) kritiktir.
- Rate limit ve kötüye kullanım senaryoları iş mantığı zafiyetlerini ortaya çıkarır.
Özet Anlatım
API güvenliğinde amaç; kimliği doğrulanmış bir kullanıcının sahip olmaması gereken verilere veya işlemlere erişmesini engellemektir. Bunun için belgeleri (OpenAPI) doğru okumak, kimlik/claim kurallarını test etmek ve hız/limit mekanizmalarının suistimali engellediğini doğrulamak gerekir.
Kısaltmalar
- OIDC/OAuth: Kimlik doğrulama/yetkilendirme standartları.
- JWT: İmzalı token formatı (id, role gibi claim’ler taşır).
- IDOR/BOLA: Nesne erişim denetimi zafiyetleri.
Keşif ve Dokümantasyon
- Swagger/OpenAPI şemaları, Postman koleksiyonları ve gateway kuralları
- Endpoint kategorileri, veri duyarlılığı ve giriş-çıkış şemaları
Kimlik ve Yetki
- OAuth/OIDC akışları, JWT imza/expiration ve claim doğrulama
- IDOR, mass assignment, BOLA ve veri sızıntıları
İş Mantığı ve Kötüye Kullanım
- Rate limit, kaynak tüketim ve yarış koşulları
- Finansal/puan bazlı işlemlerde doğrulama ve denge kontrolleri
Pratik Rehber
API’lerde en yaygın sorunlar, kimliği doğrulanmış bir kullanıcının yetkili olmadığı veriye erişebilmesinden doğar. Bu yüzden önce belgelerden (OpenAPI) başlayın, sonra kimlik/rol/claim kombinasyonlarıyla aynı isteği farklı yetkiler altında deneyerek sınırları bulun.
Adım adım:
- Belgeden profile. Swagger/OpenAPI şemasından örnek istekler çıkarın; 401/403 beklenen durumları tabloya dökün.
- Yetki sınırlarını zorlayın. ID değişimiyle IDOR olup olmadığına bakın; rol/claim varyasyonlarıyla BOLA/mass assignment test edin.
- Kötüye kullanımı simüle edin. Eşzamanlı isteklerle yarış koşulu ve rate limit ihlallerini arayın.
Örnek: “/orders/{id}” uç noktasında müşteri A, müşteri B’nin siparişini görebiliyorsa sorun IDOR’dur. Çözüm; erişim kontrolünü yalnızca rol adına değil, kaynağın sahibine göre yapmak ve bu kuralı sunucu tarafında zorunlu tutmaktır.