OWASP Top 10 2025: Türkçe Detaylı Rehber
Merhaba TurkTeam,
OWASP Top 10, web uygulama güvenliğinde yıllardır standart farkındalık belgesi. 2025 sürümü veri ve güvenlik trendlerine göre güncellendi; liste 2021'den önemli ölçüde farklı. Bu rehberde her maddeyi Türkçe özetliyor, örnek senaryo ve savunma önerisi veriyoruz.
Konuda Anlatılacaklar
- 2025 listesi neden değişti?
- A01-A10 maddelerinin her biri: tanım, örnek, savunma
- Kendi uygulamanızda hızlı kontrol listesi
- Kaynakça
2025 Listesi (Resmi Sıra)
- A01:2025 - Broken Access Control (Kırık Erişim Kontrolü)
- A02:2025 - Security Misconfiguration (Güvenlik Yanlış Yapılandırması)
- A03:2025 - Software Supply Chain Failures (Yazılım Tedarik Zinciri Hataları)
- A04:2025 - Cryptographic Failures (Kriptografik Hatalar)
- A05:2025 - Injection (Enjeksiyon)
- A06:2025 - Insecure Design (Güvensiz Tasarım)
- A07:2025 - Authentication Failures (Kimlik Doğrulama Hataları)
- A08:2025 - Software or Data Integrity Failures (Yazılım veya Veri Bütünlüğü Hataları)
- A09:2025 - Security Logging and Alerting Failures (Güvenlik Loglama ve Alarm Hataları)
- A10:2025 - Mishandling of Exceptional Conditions (Olağandışı Durumların Hatalı İşlenmesi)
A01 - Broken Access Control
Hâlâ listenin zirvesinde. Kullanıcının yetkisi olmayan kaynağa erişmesi: IDOR (başkasının faturasını ID değiştirerek görme), yatay/dikey yetki aşımı, zorla göz atma (forced browsing).
# Kötü örnek (kavramsal): sunucu tarafında sahiplik kontrolü yok
GET /api/invoices/1842
# İyi yaklaşım: oturumdaki kullanıcı ile kaynak sahibi eşleşmeli
if invoice.owner_id != current_user.id: return 403A02 - Security Misconfiguration
2025'te bir basamak yükseldi. Varsayılan parolalar, gereksiz açık portlar, ayrıntılı hata mesajları, yanlış bulut depolama izinleri (açık S3 kovası gibi).
Savunma: Hardening checklist, Infrastructure as Code ile tekrarlanabilir yapılandırma, staging ile production'ın ayrı sırları.
A03 - Software Supply Chain Failures
Yeni / yeniden çerçevelenmiş kritik madde. Bağımlılık zehirleme, ele geçirilmiş paket, imzasız güncelleme, CI/CD boru hattı ele geçirme.
# Bağımlılıkları kilitleyin ve denetleyin
npm ci --ignore-scripts
npm audit --production
# Python
pip install -r requirements.txt --require-hashes
pip-auditA04 - Cryptographic Failures
Eski "Sensitive Data Exposure" ailesinin devamı. Zayıf algoritmalar (MD5/SHA1 parola için), düz metin HTTP, sabit IV, anahtarların kodda saklanması.
Savunma: TLS 1.2+, parola için Argon2/bcrypt, anahtarları HSM/KMS'te tutun, PII'yi şifreleyin.
A05 - Injection
SQLi, komut enjeksiyonu, LDAP, NoSQL, ORM kötüye kullanımı hâlâ yaygın.
# Parametreli sorgu (iyi)
cursor.execute("SELECT * FROM users WHERE email = %s", (email,))
# String birleştirme (kötü)
# cursor.execute(f"SELECT * FROM users WHERE email = '{email}'")A06 - Insecure Design
Kod hatası değil, tasarım hatası: Tehdit modellemesi yapılmamış iş akışları, "güven güvenlikten önce" varsayımları.
Savunma: Threat modeling (STRIDE), güvenli tasarım kalıpları, iş mantığı testleri.
A07 - Authentication Failures
Zayıf parola politikası, credential stuffing'e açık giriş, oturum sabitleme, MFA eksikliği.
Savunma: MFA, rate limiting, güvenli oturum çerezleri (HttpOnly, Secure, SameSite), breached password kontrolü.
A08 - Software or Data Integrity Failures
İmzasız güncellemeler, güvensiz CI/CD, serileştirme saldırıları, CDN üzerinden sunulan bütünlüğü doğrulanmamış script'ler.
Savunma: Subresource Integrity (SRI), imzalı release, serileştirmede güvenilmeyen girdiyi reddetme.
A09 - Security Logging and Alerting Failures
Sadece log tutmak yetmez; alarm da üretmek gerekir. Başarısız giriş patlaması, yetki reddi artışı, admin işlemleri izlenmeli.
# Örnek: başarısız girişleri say (kavramsal)
# SIEM kuralı: 5 dk içinde aynı IP'den 20+ failed login -> alarmA10 - Mishandling of Exceptional Conditions
2025'in yeni / yeniden adlandırılmış maddesi. Hata, timeout, yarış durumu, beklenmeyen durum kodları güvenli şekilde ele alınmazsa bilgi sızıntısı veya yetki aşımı doğabilir.
Savunma: Fail-safe varsayılanlar, genel hata sayfaları, özel hata ayrıntısını yalnızca log'a yazın.
Hızlı Kontrol Listesi
- Her API uç noktası için yetki testi yazıldı mı?
- Bağımlılıklar kilitli ve taranıyor mu?
- TLS ve modern kriptografi zorunlu mu?
- Giriş alanları parametreli / doğrulanmış mı?
- MFA ve rate limit var mı?
- Log + alarm kuralları tanımlı mı?
Kaynakça
Görsel: TurkTeam özgün kapak görseli.
Alıntı:Yasal Uyarı: Bu konudaki teknik örnekler yalnızca kendi uygulamalarınızda veya yazılı izinli test ortamlarında kullanılmalıdır. İzinsiz güvenlik testleri TCK 243-245 kapsamında suçtur.
