OWASP API Top 10 Türkçe: API Güvenliği Riskleri (2023)
OWASP API Top 10 Türkçe anlatım: 2023 listesindeki on API güvenliği riski, gerçekçi örnekler ve her biri için geliştiricinin uygulayacağı savunma adımları.
OWASP API Top 10, API'lerde en sık görülen ve en çok zarar veren on güvenlik riskini sıralayan OWASP listesidir. Güncel sürüm 2023'tür. Listenin ilk sırasında nesne düzeyinde yetkilendirme hatası (BOLA) var: kullanıcı bir kimliği değiştirerek başkasının kaydını görebiliyor. Bu yazıda on riskin hepsini Türkçe karşılıkları, örnekleri ve savunma adımlarıyla bulacaksın.
OWASP API Top 10 nedir, neden ayrı bir liste var?
Bir web sayfası kullanıcıya yalnız göstermek istediği alanları gösterir. API ise ham veriyi ve işlemleri doğrudan sunar. Mobil uygulama, web arayüzü ve iş ortakları aynı uç noktaları çağırır. Saldırgan ekrana bakmaz. İsteği yakalar, kimliği, alanı ya da sayfa boyutunu değiştirip yeniden gönderir.
Bu yüzden OWASP, genel web listesinden ayrı bir API listesi tutar. İlk sürüm 2019'da çıktı. 2023 sürümü bazı başlıkları birleştirdi ve iş akışı kötüye kullanımı, SSRF ve üçüncü taraf API'ler gibi yeni riskler ekledi. Genel web uygulaması riskleri için OWASP Top 10 yazısına bak. Bu sayfa yalnız API'lere odaklanır.
OWASP API Top 10 2023 listesi (Türkçe)
Aşağıdaki tabloda resmî adlar birebir, Türkçe karşılıkları ise anlamı koruyacak biçimde verildi:
| Kod | Resmî ad | Türkçe karşılığı | Kısaca |
|---|---|---|---|
| API1:2023 | Broken Object Level Authorization | Bozuk nesne düzeyi yetkilendirme | Başkasının kaydına kimlik değiştirerek erişim |
| API2:2023 | Broken Authentication | Bozuk kimlik doğrulama | Token çalma, sınırsız parola denemesi |
| API3:2023 | Broken Object Property Level Authorization | Bozuk nesne özelliği düzeyi yetkilendirme | Fazla alan döndürmek ya da izinsiz alanı değiştirmek |
| API4:2023 | Unrestricted Resource Consumption | Sınırsız kaynak tüketimi | İstek, boyut, süre ve maliyet sınırı yok |
| API5:2023 | Broken Function Level Authorization | Bozuk fonksiyon düzeyi yetkilendirme | Sıradan kullanıcının yönetici işlevini çağırması |
| API6:2023 | Unrestricted Access to Sensitive Business Flows | Hassas iş akışlarına sınırsız erişim | Bilet, stok ya da kupon akışının botla sömürülmesi |
| API7:2023 | Server Side Request Forgery | Sunucu taraflı istek sahteciliği (SSRF) | Sunucunun saldırganın verdiği adrese istek atması |
| API8:2023 | Security Misconfiguration | Güvenlik yanlış yapılandırması | Gevşek CORS, ayrıntılı hata, gereksiz HTTP yöntemi |
| API9:2023 | Improper Inventory Management | Hatalı envanter yönetimi | Unutulan eski sürüm ve belgesiz uç noktalar |
| API10:2023 | Unsafe Consumption of APIs | API'lerin güvensiz tüketimi | Üçüncü taraf API'den gelen veriye körü körüne güvenmek |
Listedeki on başlığın üçü yetkilendirme hatasıdır. Bu, API güvenliğinin en zayıf halkasının "kim neye erişebilir" sorusu olduğunu gösterir.
Yetkilendirme hataları: API1, API3 ve API5
Kimlik doğrulama "sen kimsin" sorusunu yanıtlar. Yetkilendirme ise "bunu yapmaya hakkın var mı" sorusunu. Üç yetkilendirme riski bu ikinci sorunun farklı katmanlarında ortaya çıkar.
API1, nesne düzeyi: Ayşe kendi siparişini GET /api/siparisler/1042 ile görüyor. Numarayı 1043 yapınca başkasının siparişi açılıyorsa sunucu sahipliği kontrol etmiyordur. Çözüm, kaydı veritabanından çekerken kullanıcının kimliğini de koşula eklemektir. Ayrıntılı örnekler IDOR nedir yazısında.
API3, özellik düzeyi: 2023 listesi, 2019'daki "aşırı veri ifşası" ile "kütle atama" başlıklarını burada birleştirdi. İki yönü var:
- Yanıt, arayüzün kullanmadığı alanları da taşır. Örneğin parola özeti ya da iç notlar.
- Güncelleme isteğine
"rol": "yonetici"gibi bir alan eklendiğinde sunucu bunu da kaydeder.
Çözüm, her uç nokta için hangi alanların okunabileceğini ve hangilerinin yazılabileceğini açıkça tanımlamaktır. Veritabanı nesnesini olduğu gibi döndürme.
API5, fonksiyon düzeyi: Sıradan bir kullanıcı DELETE /api/kullanicilar/77 isteğini gönderdiğinde işlem gerçekleşiyorsa, yönetici işlevi korunmuyordur. Varsayılan olarak her şeyi reddet, rolleri sunucu tarafında kontrol et.
Kimlik doğrulama hataları: API2
Bu başlık, saldırganın başka birinin kimliğine bürünmesini sağlayan hataları kapsar: giriş uç noktasında sınırsız deneme, imzası doğrulanmayan ya da süresi dolmayan token, adresi URL'de taşınan oturum anahtarı, tek kullanımlık kodun sayısız kez denenebilmesi.
Savunma adımları:
- Giriş, parola sıfırlama ve tek kullanımlık kod uç noktalarına sıkı oran sınırı koy. Nasıl yapılacağını rate limiting nedir yazısında anlattık.
- Token imzasını ve süresini her istekte sunucuda doğrula. Kısa ömürlü erişim token'ı kullan.
- Hassas işlemlerde, örneğin e-posta değişikliğinde, parolayı yeniden sor.
- Mümkünse çok faktörlü doğrulamayı aç.
Kaynak ve iş akışı kötüye kullanımı: API4 ve API6
API4, sınırsız kaynak tüketimi: OWASP, aşağıdaki sınırlardan biri eksik ya da yanlış ayarlıysa API'yi açık sayar: çalışma süresi, bellek, dosya yükleme boyutu, tek yanıttaki kayıt sayısı, tek istekteki işlem sayısı (GraphQL toplu sorguları gibi) ve üçüncü taraf hizmetlere harcama limiti. Son madde sık unutulur. SMS gönderen bir parola sıfırlama uç noktası sınırsızsa, saldırgan hizmeti çökertmeden faturanı şişirebilir.
API6, hassas iş akışlarına sınırsız erişim: Burada teknik bir hata yoktur. Akış doğru çalışır ama otomasyonla kötüye kullanılır. OWASP'ın örneklerinde bir saldırgan, sınırlı stoklu bir ürünü farklı IP adreslerinden çalışan betikle satın alıp başka yerde pahalıya satar. Bir başkası ücretsiz iptal hakkıyla bir uçuşun koltuklarının çoğunu ayırır. Uçuştan birkaç gün önce hepsini iptal eder, havayolu boş koltukları doldurmak için fiyatı düşürünce kendine ucuz bir bilet alır. Savunma, hangi akışın iş için hassas olduğunu belirleyip insan dışı kullanım kalıplarını tespit etmektir.
SSRF, yapılandırma, envanter ve üçüncü taraf API'ler: API7-API10
API7, SSRF: API, kullanıcının verdiği bir adresten resim ya da belge çekiyorsa saldırgan bu adresi iç ağa yöneltebilir. Gidilebilecek adresleri izin listesiyle sınırla, iç adres aralıklarını engelle. Mekanizmanın tamamı SSRF nedir yazısında.
API8, güvenlik yanlış yapılandırması: Her kökene açık CORS, yığın izi gösteren hata yanıtları, şifresiz HTTP, kullanılmayan HTTP yöntemleri ve eksik güvenlik başlıkları bu gruba girer.
API9, hatalı envanter yönetimi: Ekip v2 sürümünü korurken v1 hâlâ eski ve zayıf kontrollerle çalışıyor olabilir. Test ortamları, belgede yer almayan uçlar ve geçici hata ayıklama adresleri de unutulur. Her uç noktanın sahibini, sürümünü ve hangi veriyi döndürdüğünü gösteren bir envanter tut.
API10, API'lerin güvensiz tüketimi: Geliştiriciler kendi kullanıcılarından gelen veriye şüpheyle bakarken iş ortağı API'sinden gelen veriye güvenir. Üçüncü taraf yanıtını da doğrula, yönlendirmeleri körü körüne izleme, bu bağlantıları şifreli kanal üzerinden kur.
API güvenliği için yayın öncesi kontrol listesi nedir?
Her yeni uç noktayı yayına almadan önce şu sorulara yanıt ver:
| Soru | İlgili risk |
|---|---|
| Bu kayıt isteği yapan kullanıcıya mı ait? | API1 |
| Token sunucuda doğrulanıyor, giriş denemeleri sınırlı mı? | API2 |
| Yanıtta arayüzün kullanmadığı alan var mı, güncellemede yazılabilir alanlar sabit mi? | API3 |
| Sayfa boyutu, dosya boyutu ve süre sınırı tanımlı mı? | API4 |
| Bu işlev hangi rollere açık, sunucu bunu kontrol ediyor mu? | API5 |
| Bu akış botla kötüye kullanılırsa iş nasıl etkilenir? | API6 |
| Sunucu kullanıcının verdiği bir adrese istek atıyor mu? | API7 |
| Hata yanıtları iç ayrıntı sızdırıyor mu? | API8 |
| Uç nokta envantere eklendi, eski sürüm kapatıldı mı? | API9 |
| Üçüncü taraftan gelen veri doğrulanıyor mu? | API10 |
Bir API'den kişisel veri sızarsa sorun teknik olmaktan çıkar ve hukuki bir yükümlülüğe dönüşür. Bildirim süreci için KVKK veri ihlali bildirimi yazısına bak.
API güvenliğini nasıl test edersin?
Yetkilendirme hatalarını otomatik tarayıcılar çoğu zaman bulamaz, çünkü istek biçim olarak sıradandır. En etkili yöntem basittir: kendi test ortamında iki farklı kullanıcı hesabı aç. Birinin oturumuyla aldığın her isteği diğerinin oturumuyla tekrarla ve sonuçları karşılaştır. Bunu her rol için yaptığında elinde bir yetki matrisi olur.
Test yalnız kendi sisteminde ya da yazılı izin aldığın kapsamda yapılır. Uygulamalı çalışmak için laboratuvardaki API senaryosunda belgelenmemiş bir uç noktayı, kütle atamaya açık bir alanı ve aşırı veri döndüren bir yanıtı trafik kayıtlarından bulursun. WAF gibi ek katmanların bu hataları neden tek başına durduramadığını WAF nedir yazısında anlattık.
Kaynaklar
Sık sorulan sorular
OWASP API Top 10'un en güncel sürümü hangisi?
İlk liste 2019'da, güncel liste 2023'te yayımlandı. OWASP API Security projesinin sitesi bugün de 2023 sürümünü en yeni sürüm olarak gösteriyor. 2023 listesi bazı başlıkları birleştirdi, iş akışı kötüye kullanımı, SSRF ve üçüncü taraf API'lere güvenme gibi yeni başlıklar ekledi. Yeni bir sürüm çıktığında sıra ve adlar değişebilir.
BOLA ile IDOR aynı şey mi?
Pratikte aynı hatayı anlatırlar. IDOR, kullanıcının bir kaydın kimliğini değiştirerek başkasının verisine ulaşmasıdır. OWASP API listesi bu hatayı API'ler için Broken Object Level Authorization (BOLA) adıyla birinci sıraya koyar. İkisinde de çözüm aynıdır: sunucu her istekte, istenen kaydın o kullanıcıya ait olup olmadığını kontrol eder.
OWASP Top 10 ile OWASP API Top 10 arasındaki fark nedir?
OWASP Top 10 genel web uygulaması risklerini sıralar, en son sürümü 2025'tir. OWASP API Top 10 ise yalnız API'lere odaklanır ve nesne, özellik, fonksiyon düzeyinde yetkilendirme ile kaynak tüketimi gibi API'ye özgü riskleri ayrı ayrı ele alır. Web arayüzü olan bir uygulama geliştiriyorsan iki listeye de bakman gerekir.
API anahtarını koda yazmak güvenli mi?
Güvenli değildir. Koda gömülen anahtar sürüm kontrolüne, istemci uygulamaya ve günlüklere sızabilir. Anahtarı ortam değişkeninde ya da bir sır yönetim hizmetinde tut, yalnız gereken yetkiyi ver ve sızıntıdan şüphelenirsen hemen yenile. Mobil uygulamaya gömülen her anahtarı herkese açık say, çünkü uygulama paketi açılıp okunabilir.
Küçük bir API projesinde nereden başlamalıyım?
Önce her uç noktaya sunucu tarafında sahiplik ve rol kontrolü ekle. Sonra yanıtlarda yalnız gereken alanları döndür, güncelleme isteklerinde izin verilen alanları sabitle. Giriş, parola sıfırlama ve SMS gönderen uçlara oran sınırı koy. Son olarak uç nokta envanteri çıkar ve kullanılmayan eski sürümleri kapat. Bu dört adım listenin büyük bölümünü karşılar.
- API güvenliği
- OWASP API Top 10
- BOLA
- yetkilendirme
- REST API