Kriptografik Hatalar (Cryptographic Failures) Nedir?
OWASP Top 10 2021 listesinde 2. sırada yer alan, hassas verilerin yetersiz korunmasıyla ilgili zafiyet kategorisi.
Kriptografik Hatalar, eskiden "Sensitive Data Exposure" (Hassas Veri Sızıntısı) olarak bilinen kategorinin yeniden adlandırılmış ve kök nedene odaklanan hâlidir. Bu kategori, verinin yanlış veya hiç şifrelenmemesi sonucu ortaya çıkan riskleri kapsar.
Şifreleme Türleri: Kısa Bir Hatırlatma
- Simetrik şifreleme (AES gibi): Aynı anahtar hem şifrelemek hem çözmek için kullanılır.
- Hashleme (bcrypt, argon2 gibi): Tek yönlüdür, geri döndürülemez. Şifre saklamak için kullanılır.
Yaygın Örnekler
- Hassas verilerin düz metin olarak veritabanında saklanması.
- Şifrelerin encrypt edilmesi (çözülebilir olması) — hash'lenmesi gerekirken.
- Eski ve kırılmış algoritmaların (MD5, SHA1, DES) kullanılması.
- HTTPS yerine HTTP üzerinden hassas veri iletimi.
- Sabit kodlanmış (hardcoded) şifreleme anahtarları.
Kod Örneği
Zafiyetli:
const hash = md5(password); // Hızlı ve kırılabilir
Güvenli hâli:
const hash = await bcrypt.hash(password, 12);
Pratik Senaryo
Bir startup, kullanıcı şifrelerini "güvenlik için şifreliyoruz" diyerek AES ile encrypt edip veritabanında saklıyor — yani teorik olarak "çözülebilir" hâlde. Bir gün geliştirici ortamındaki yapılandırma dosyası yanlışlıkla halka açık bir GitHub deposuna push'lanıyor ve bu dosyada AES anahtarı da bulunuyor. Saldırgan bu anahtarla tüm kullanıcı şifrelerini "çözebiliyor" çünkü şifreler hash'lenmemiş, encrypt edilmişti. Eğer şirket bcrypt gibi tek yönlü bir hash algoritması kullansaydı, anahtar sızsa bile şifreler "çözülebilir" olmayacaktı — bu senaryo, "şifreleme" ile "hashleme" arasındaki farkın neden hayati olduğunu gösteriyor.
Gerçek Dünya Vakası
2012'deki büyük bir profesyonel ağ platformu sızıntısında, milyonlarca kullanıcı şifresi SHA1 ile (salt kullanılmadan) hash'lenmişti. SHA1'in hızlı olması ve salt eksikliği, saldırganların rainbow table denilen önceden hesaplanmış tablolarla kısa sürede büyük bir kısmını çözmesine yol açtı.
Tespit Yöntemleri
- Veritabanı şemasını inceleyerek hangi alanların şifrelenmesi/hash'lenmesi gerektiğini haritalamak.
- Ağ trafiğini izleyerek HTTP üzerinden hassas veri geçip geçmediğini kontrol etmek.
- Statik kod analizi araçlarıyla zayıf algoritma kullanımını otomatik taramak.
Nasıl Önlenir?
- Hangi verinin hassas olduğunu baştan sınıflandırmak.
- Şifreler için özel olarak tasarlanmış, yavaş hash algoritmaları kullanmak (bcrypt, argon2, scrypt).
- Genel veri şifreleme için güncel, kanıtlanmış algoritmalar kullanmak (AES-256).
- Her yerde HTTPS'i zorunlu kılmak ve HSTS başlığıyla pekiştirmek.
- Anahtar yönetimini merkezi ve güvenli bir sistemle (KMS) yapmak.
Bu makale OWASP Top 10 2021 "A02:2021 – Cryptographic Failures" kategorisinin genişletilmiş Türkçe özetidir.