OWASP Top 10 (2025) Kapsamlı Uygulama Güvenliği ve Savunma Kılavuzu
OWASP Top 10:2025 kategorileri, 2021 sürümünden farkları ve her kategori için mimari ve kodlama düzeyinde savunmalar.
- #owasp
- #appsec
- #web
- #defense
- #secure-coding
1. Giriş: 2021’den 2025’e Ne Değişti?
OWASP Top 10, web uygulamalarındaki en kritik risk kategorilerinin referans listesidir. 2025 sürümündeki başlıca değişiklikler:
| 2025 | Değişiklik |
|---|---|
| A02 Security Misconfiguration | 5. sıradan 2. sıraya yükseldi. |
| A03 Software Supply Chain Failures | Yeni kapsam. 2021’deki “Vulnerable and Outdated Components” kategorisini derleme, dağıtım ve bağımlılık zincirinin tamamını kapsayacak şekilde genişletir. |
| A10 Mishandling of Exceptional Conditions | Yeni kategori. Hatalı hata yönetimi, “fail-open” davranışı ve mantık hataları. |
| SSRF | Ayrı kategori olmaktan çıktı, A01 Broken Access Control altına alındı. |
| A07 / A09 | Adları “Authentication Failures” ve “Security Logging and Alerting Failures” olarak güncellendi. |
Kaynak: OWASP Top 10:2025
2. Kategoriler ve Savunmalar
A01:2025 – Broken Access Control (Bozuk Erişim Kontrolü)
- Risk: Kullanıcının yetkisi dışındaki veri veya işlevlere erişmesi (IDOR/BOLA, zorunlu gezinme, yetki yükseltme). 2025’te SSRF de bu kategoriye dahil.
- Savunma:
- Varsayılan olarak tüm erişimleri engelleyin (
deny by default), yetkiyi her istekte sunucu tarafında doğrulayın. - Rota düzeyi yerine nesne/kaynak düzeyinde yetki kontrolü (ABAC/ReBAC) uygulayın.
- CORS’ta
Access-Control-Allow-Origindeğerini yansıtmayın; kimlik bilgisi taşıyan isteklerde yalnızca açık allowlist kullanın. - SSRF: Giden istekleri domain/IP allowlist’i ile sınırlandırın, dahili aralıkları (127.0.0.0/8, 10.0.0.0/8, 169.254.169.254) ağ düzeyinde engelleyin, bulutta IMDSv2 zorunlu kılın.
- Varsayılan olarak tüm erişimleri engelleyin (
A02:2025 – Security Misconfiguration (Güvenlik Yapılandırma Hataları)
- Risk: Varsayılan parolalar, açık debug modları ve stack trace’ler, gereksiz servis/metotlar, eksik güvenlik başlıkları, herkese açık bulut depolama.
- Savunma:
- Ortamları tekrarlanabilir, sıkılaştırılmış şablonlarla (IaC) kurun ve yapılandırma sapmasını otomatik denetleyin.
- Üretimde debug modlarını kapatın; hata yanıtlarında iç ayrıntı döndürmeyin.
- CSP, HSTS ve
frame-ancestorsgibi güvenlik başlıklarını eksiksiz yapılandırın.
A03:2025 – Software Supply Chain Failures (Yazılım Tedarik Zinciri Hataları)
- Risk: Savunmasız veya güncel olmayan bağımlılıklar, ele geçirilmiş paketler (typosquatting, bağımlılık karışıklığı), güvensiz CI/CD boru hatları ve derleme ortamları.
- Savunma:
- SBOM üretin ve bağımlılıkları sürekli tarayın (ör. Trivy, OSV-Scanner, Dependabot).
- Lock dosyalarıyla sürümleri sabitleyin; özel paket adları için kapsamlı (scoped) kayıt defteri kullanın.
- Derleme çıktılarını imzalayın ve doğrulayın (Sigstore/Cosign, SLSA provenance).
- CI/CD’de en az yetki uygulayın; üçüncü taraf eylemleri commit hash’e sabitleyin.
A04:2025 – Cryptographic Failures (Kriptografik Hatalar)
- Risk: Hassas verinin açık metin iletilmesi veya saklanması, zayıf algoritmalar (MD5, SHA-1, DES), hatalı anahtar yönetimi.
- Savunma:
- Transit veride TLS 1.2+ (tercihen 1.3) ve HSTS kullanın.
- Parolalarda Argon2id veya bcrypt (yeterli maliyet faktörüyle) kullanın.
- Simetrik şifrelemede AES-GCM veya ChaCha20-Poly1305 gibi kimlik doğrulamalı şifreleri tercih edin; anahtarları KMS/HSM’de tutun.
A05:2025 – Injection (Enjeksiyon)
- Risk: SQL, NoSQL, OS komut, LDAP, şablon (SSTI) enjeksiyonları ve XSS.
- Savunma:
- Veritabanı işlemlerinde parametreli sorgular kullanın.
- Çıktıyı bağlama uygun şekilde kodlayın (HTML, attribute, JS, URL); CSP ile XSS etkisini sınırlayın.
eval,execve güvensiz deserialization fonksiyonlarından kaçının.
A06:2025 – Insecure Design (Güvensiz Tasarım)
- Risk: Kodlama hatası değil, tasarım düzeyindeki eksiklikler: sınırsız kupon kullanımı, oran sınırı olmayan parola sıfırlama, iş mantığı atlatmaları.
- Savunma:
- Tehdit modellemeyi (STRIDE vb.) SDLC’nin parçası yapın.
- Kritik iş akışlarında oran sınırlama, idempotency ve ek onay adımları tasarlayın.
A07:2025 – Authentication Failures (Kimlik Doğrulama Hataları)
- Risk: Zayıf parola politikaları, credential stuffing, oturum sabitleme, MFA eksikliği.
- Savunma:
- NIST SP 800-63B’ye uygun parola politikası uygulayın, sızmış parola listelerine karşı kontrol edin.
- MFA’yı zorunlu kılın; mümkünse phishing’e dayanıklı FIDO2/passkey kullanın.
- Oturum kimliğini girişten sonra yenileyin, oturumlara süre sınırı koyun.
A08:2025 – Software or Data Integrity Failures (Yazılım veya Veri Bütünlüğü Hataları)
- Risk: İmzasız güncellemeler, güvenilmeyen kaynaktan kod/veri yüklenmesi, güvensiz deserialization, bütünlüğü doğrulanmayan token’lar.
- Savunma:
- Güncelleme ve eklentilerin imzasını doğrulayın; CDN’den yüklenen betiklerde Subresource Integrity (SRI) kullanın.
- JWT doğrulamasında algoritmayı sunucu tarafında sabitleyin,
alg: nonekabul etmeyin.
A09:2025 – Security Logging and Alerting Failures (Günlükleme ve Alarm Hataları)
- Risk: Güvenlik olaylarının loglanmaması veya loglansa bile alarm üretilmemesi; saldırının aylar sonra fark edilmesi.
- Savunma:
- Kimlik doğrulama, yetki reddi ve kritik işlem olaylarını merkezi SIEM’e gönderin.
- Loglardan eyleme dönüştürülebilir alarmlar üretin ve olay müdahale sürecine bağlayın.
- Log bütünlüğünü koruyun (append-only depolama); loglara hassas veri yazmayın.
A10:2025 – Mishandling of Exceptional Conditions (İstisnai Durumların Hatalı Yönetimi)
- Risk: Beklenmedik girdi, zaman aşımı veya kaynak tükenmesinde uygulamanın güvensiz davranması: “fail-open” yetki kontrolleri, yarım kalan işlemler, hata mesajlarıyla bilgi sızması.
- Savunma:
- Hata durumunda güvenli tarafa düşün (
fail closed): yetki kontrolü hata verirse erişimi reddedin. - Çok adımlı işlemleri atomik yapın, hata durumunda geri alın (transaction/rollback).
- Hataları merkezi olarak yakalayın; kullanıcıya genel mesaj dönün, ayrıntıyı yalnızca loglayın.
- Hata durumunda güvenli tarafa düşün (