OWASP Top 10: Java ve Spring Projelerindeki Karşılıkları

OWASP Top 10 (2021) kategorilerinin Java/Spring dünyasındaki somut karşılıkları: erişim kontrolü, enjeksiyon, yanlış yapılandırma, savunmasız bağımlılıklar ve SSRF için pratik önlem haritası.

Java Spring kodunda OWASP Top 10 önlemlerini gösteren editör penceresi: PreAuthorize ve parametrik sorgu örnekleri

OWASP Top 10 nedir ve Java geliştiricisi için neden önemlidir?

OWASP Top 10, web uygulamalarındaki en kritik güvenlik risklerinin, gerçek zafiyet verilerine dayanarak derlenen ve sektörde fiili standart kabul edilen listesidir; güncel sürümü 2021'de yayımlanmıştır. Liste dilden bağımsızdır — ama her kategorinin Java/Spring dünyasında somut bir karşılığı ve somut bir önlemi vardır. Bu yazı o haritayı çıkarır.

2021 listesinin Java/Spring haritası

Kategori

Java/Spring'de tipik görünümü

Birincil önlem

A01 – Kırık Erişim Kontrolü

ID ile nesneye doğrudan erişim (IDOR), eksik metot güvenliği

@PreAuthorize + nesne sahipliği kontrolü

A02 – Kriptografik Hatalar

Zayıf parola özetleme, açık HTTP, ev yapımı kripto

BCrypt/Argon2, her yerde TLS, standart kütüphaneler

A03 – Enjeksiyon

Birleştirilmiş JPQL/native sorgular, log enjeksiyonu

Parametrik sorgular, girdi normalizasyonu

A04 – Güvensiz Tasarım

Tehdit modeli olmadan geliştirme

Tasarım aşamasında tehdit modelleme

A05 – Güvenlik Yapılandırma Hataları

Açık Actuator uç noktaları, ayrıntılı hata sayfaları

Üretim profili sertleştirme

A06 – Savunmasız Bileşenler

Log4Shell benzeri bağımlılık zafiyetleri

CI'da CVE taraması, SBOM, hızlı yama

A07 – Kimlik Doğrulama Hataları

Zayıf oturum yönetimi, kaba kuvvete açık girişler

Spring Security oturum korumaları, hız limiti, MFA

A08 – Yazılım/Veri Bütünlüğü

Java native serileştirme, doğrulanmayan güncellemeler

Serileştirmeden kaçınma, imza doğrulama

A09 – Loglama/İzleme Eksikliği

Güvenlik olaylarının iz bırakmaması

Denetim logları, merkezi izleme, alarm

A10 – SSRF

Kullanıcı girdisiyle sunucudan URL çağırma

URL izin listesi, iç ağ erişim kısıtı

A01 – Kırık erişim kontrolü: listenin bir numarası

OWASP'ın 2021 verisinde ilk sıraya yükselen kategori budur ve Spring projelerindeki en yaygın biçimi IDOR'dur: /api/orders/42 uç noktasının, 42 numaralı siparişin gerçekten o kullanıcıya ait olup olmadığını kontrol etmemesi. Çözüm iki katmanlıdır: uç noktada @PreAuthorize ile rol/yetki kontrolü ve serviste nesne sahipliği doğrulaması. Yetkilendirmeyi yalnızca arayüzde gizlemek — butonu saklamak — erişim kontrolü değildir; her istek sunucuda doğrulanmalıdır.

A03 – Enjeksiyon: ORM kullanmak sizi otomatik korumaz

JPA/Hibernate parametrik sorgularla çalıştığında SQL enjeksiyonuna karşı güçlü koruma sağlar; risk, string birleştirmeyle kurulan JPQL veya native sorgularda geri döner. Kural nettir: kullanıcı girdisi asla sorgu metnine eklenmez, yalnızca parametre olarak bağlanır. Enjeksiyonun daha az bilinen türü log enjeksiyonudur: girdideki satır sonu karakterleri temizlenmezse saldırgan log kayıtlarına sahte satırlar yazdırabilir.

A05 ve A06 – Yapılandırma ve bağımlılıklar: ihlallerin sessiz çoğunluğu

Açık bırakılan Actuator uç noktaları, üretimde ayrıntılı hata sayfaları, varsayılan kimlik bilgileri — bunlar A05'in Spring dünyasındaki klasikleridir. A06'nın dersini ise Log4Shell (CVE-2021-44228) verdi: kendi kodunuz kusursuz olsa bile bağımlılık ağacınız saldırı yüzeyinizdir. İkisinin ortak reçetesi süreçtir: üretim profili için sertleştirme kontrol listesi, her derlemede bağımlılık taraması ve kritik zafiyetler için tanımlı yama süresi.

A10 – SSRF: bulut çağının yükselen riski

Sunucunuzun, kullanıcıdan gelen bir URL'yi çağırması (webhook doğrulama, görsel indirme, içe aktarma) SSRF kapısıdır: saldırgan bu kanalla iç ağdaki servislere veya bulut metadata uç noktalarına erişmeye çalışır. Önlem: dış istek atan her akışta hedef alan adı izin listesi, iç IP bloklarının reddi ve bu isteklerin ağ katmanında da kısıtlanması.

İş etkisi: denetimlerin ortak dili

OWASP Top 10, müşteri güvenlik anketlerinin ve sızma testi raporlarının ortak dilidir. Kurumsal bir müşteriye "OWASP Top 10 kategorilerini şu kontrollerle karşılıyoruz" diyebilen bir tedarikçi, güvenlik değerlendirmesini hızlandırır; diyemeyen, satış sürecinde ek denetim turlarına takılır. Bu çerçeveye yatırım, aynı zamanda satış sürecine yatırımdır.

Sık sorulan sorular

OWASP Top 10 bir uyumluluk standardı mıdır?

Resmî bir sertifikasyon değildir; ama PCI DSS gibi standartlar ve birçok kurumsal tedarikçi denetimi, güvenli geliştirme pratiği için OWASP'a atıf yapar.

Spring Security kullanıyorum — hangileri hâlâ benim sorumluluğumda?

Spring Security kimlik doğrulama, oturum ve CSRF'te güçlü varsayılanlar verir; ama nesne sahipliği kontrolü (A01), sorgu disiplini (A03), yapılandırma (A05) ve bağımlılık yönetimi (A06) tamamen proje ekibinin işidir.

Statik analiz araçları yeterli mi?

SAST/DAST araçları özellikle enjeksiyon ve yapılandırma hatalarında değerlidir; ancak iş mantığına bağlı erişim kontrolü hatalarını çoğunlukla yakalayamaz — orada kod incelemesi ve test şarttır.

Hızlı değerlendirme listesi

  1. Her veri erişiminde nesne sahipliği kontrolü var mı?

  2. Tüm sorgular parametrik mi; string birleştirme taraması yapıldı mı?

  3. Üretim profili: Actuator, hata detayları, varsayılan hesaplar gözden geçirildi mi?

  4. CI'da bağımlılık CVE taraması ve SBOM üretimi var mı?

  5. Girişlerde hız limiti ve kaba kuvvet koruması aktif mi?

  6. Dışa istek atan akışlarda URL izin listesi uygulanıyor mu?

  7. Güvenlik olayları loglanıyor ve alarma bağlı mı?

SSH Yazılım, Java/Spring projelerinde OWASP Top 10 temelli kod ve mimari denetimleri gerçekleştirir. Projenizin bu harita üzerindeki fotoğrafını çıkarmak için bizimle iletişime geçin.