~/sibercrew
Web Güvenliği

Güvensiz Tasarım (Insecure Design) Nedir?

OWASP Top 10 2021'e yeni eklenen, kodlama hatasından değil tasarım aşamasındaki eksiklerden kaynaklanan risk kategorisi.

Güvensiz Tasarım, önceki kategorilerden farklı olarak bir kod hatasına değil, uygulamanın baştan yanlış/eksik tasarlanmasına işaret eder. Bu kategori 2021 listesine yeni eklendi çünkü güvenlik açığı sadece "kötü yazılmış kod" ile değil, "hiç düşünülmemiş senaryolar" ile de ortaya çıkabiliyor.

Kod Hatası mı, Tasarım Hatası mı?

Bir kod hatası, yanlış yazılmış bir satırdır ve düzeltilebilir. Bir tasarım hatası ise, sistemin planlanma aşamasında hiç düşünülmemiş bir senaryodur — kodun "doğru" çalışmasına rağmen güvenlik açığı barındırmasıdır.

Örnek Senaryo

Bir şifre sıfırlama akışı düşünelim: geliştirici teknik olarak "doğru" kod yazmış olabilir, ama tasarım aşamasında "saldırgan bu akışı kaç kez deneyebilir?" veya "e-posta adresi doğrulanmadan yeni şifre kabul edilebilir mi?" gibi sorular hiç sorulmamışsa, ortada bir kod hatası olmasa bile ciddi bir güvenlik açığı vardır.

Pratik Senaryo

Bir mobil oyun şirketi, kullanıcıların arkadaşlarına "hediye puan" gönderebileceği bir özellik geliştiriyor. Geliştirici ekip, hediye gönderme işleminin teknik olarak kusursuz çalıştığından emin oluyor: doğru kullanıcıya, doğru miktarda puan gidiyor. Ancak tasarım aşamasında kimse "bir kullanıcı aynı hediyeyi art arda binlerce kez gönderebilir mi?" sorusunu sormamış. Kod hatasız çalışıyor ama tasarımda bir sınır (rate limit, günlük hediye limiti) hiç düşünülmemiş. Sonuç: birkaç kullanıcı, botlarla saatler içinde sistemdeki tüm sanal para birimini anlamsız hâle getiriyor. Bu, "kod doğru ama tasarım eksik" durumunun tipik bir örneği.

Neden Önemli?

Bir güvenlik açığını sonradan yamalamak, onu en baştan doğru tasarlamaktan çok daha maliyetlidir. "Secure by design" yaklaşımı, güvenliği sona bırakmak yerine en baştan sürecin parçası yapar.

Tespit Yöntemleri

  • Tasarım dokümanlarını "kötüye kullanım senaryoları" (abuse cases) açısından gözden geçirmek.
  • İş akışlarında "bu işlem kaç kez tekrarlanabilir, kim tarafından, ne sınırla?" sorularını sormak.
  • Yeni özellik geliştirme sürecine güvenlik ekibini en baştan dahil etmek.

Nasıl Önlenir?

  • Tehdit modelleme (threat modeling) yaparak "bu özellik nasıl kötüye kullanılabilir?" sorusunu tasarım aşamasında sormak.
  • Güvenli tasarım kalıplarını ve referans mimarileri kullanmak.
  • Kritik iş akışları için (ödeme, şifre sıfırlama, yetkilendirme) iş mantığı sınırlarını net tanımlamak.

Bu makale OWASP Top 10 2021 "A04:2021 – Insecure Design" kategorisinin genişletilmiş Türkçe özetidir.