<

OWASP Mobile Top 10 ile Mobil Uygulama Güvenliği

Mobil uygulama güvenliği konuşulduğunda herkesin aklına sunucu tarafı gelir; oysa uygulamanın kendisi de saldırı yüzeyidir. APK'nızı indirip açan bir saldırgan, içine ne gömdüyseniz görür. OWASP Mobile Top 10 listesi bu yüzden bizim mobil projelerde teslim öncesi zorunlu kontrol listemizdir. Bu yazıda listenin en kritik maddelerini saha gözlemlerimizle birlikte özetliyor, Flutter ve native projelerde somut karşılıklarını gösteriyoruz.

M1: Gömülü sırlar — en yaygın ve en utandırıcı açık

Listenin başındaki madde, kimlik bilgilerinin yanlış kullanımı. Türkçesi: API anahtarının, veritabanı şifresinin, imza sırrının uygulama koduna gömülmesi. Devraldığımız projelerin kayda değer bir kısmında decompile edilen APK'dan üretim API anahtarları çıktı. Kural net: istemciye giden hiçbir şey sır değildir. Sırlar sunucuda durur; mobil uygulama kısa ömürlü, kullanıcıya özel token'larla konuşur.

Güvensiz depolama ve iletişim

SharedPreferences veya basit dosyalara yazılan token'lar, root'lu bir cihazda açık metin olarak okunur. Hassas veri için platformun güvenli kasası şart: Android Keystore, iOS Keychain; Flutter tarafında flutter_secure_storage bu ikisinin üzerine sarılır. İletişimde ise HTTPS artık asgari standart; kritik uygulamalarda buna sertifika sabitleme (certificate pinning) eklenmeli. Ama dikkat: pinning'i sertifika rotasyon planı olmadan yaparsanız, sertifika yenilendiğinde tüm kullanıcılarınızı kilitlersiniz. Bunu da sahada gördük.

Kod tarafında sık düşülen tuzaklar

  • Yetersiz girdi doğrulama: "mobil uygulamadan geliyor, güvenlidir" varsayımı. API, istemciye asla güvenmemeli; doğrulama her zaman sunucuda tekrarlanmalı.
  • Aşırı loglama: üretim sürümünde token'ları, kişisel verileri logcat'e yazan debug kalıntıları.
  • Obfuscation eksikliği: R8/ProGuard veya Flutter'ın obfuscate bayrağı kullanılmadan çıkan sürümler, tersine mühendisliği kolaylaştırır. Obfuscation güvenlik değildir ama saldırı maliyetini yükseltir.
  • Jailbreak/root tespiti hiç olmaması: bankacılık seviyesi olmasa da, riskli işlemlerde cihaz bütünlüğü kontrolü katmanı değerlidir.

Yayın sonrası: güvenlik yaşayan bir süreçtir

Mağazaya sürüm göndermekle güvenlik işi kapanmaz. Bağımlılıklarınızdan birinde yarın bir CVE yayınlanabilir; bunu haber veren otomatik bir tarama (pub.dev bağımlılıkları için CI'da zafiyet kontrolü) yoksa, açığı sizden önce saldırgan öğrenir. Sunucu tarafındaki API'de yapılan değişiklikler de mobil güvenliği etkiler: yeni bir endpoint eklenirken mobilin varsaydığı yetki modeli bozulabilir. Bu yüzden mobil ve backend güvenlik gözden geçirmelerini ayrı dünyalar gibi değil, tek bir bütün olarak ele alıyoruz. Son bir not da eski sürümler hakkında: kullanıcılarının önemli kısmı iki yıl önceki sürümde kalan bir uygulamada, o eski sürümün konuştuğu API'ler de yaşamaya devam eder. Zorunlu güncelleme mekanizması (asgari sürüm kontrolü) baştan kurgulanmazsa, en zayıf halkanız daima geçmişte kalır.

Süreç önerimiz

Güvenliği sürüm sonuna bırakmayın. Bizim akışımız: her sürümde otomatik statik tarama (gömülü sır, bağımlılık zafiyeti), kritik sürümlerde manuel inceleme ve yılda en az bir kez bağımsız sızma testi. Rich Design olarak 2010'dan beri mobil uygulama geliştiriyoruz; mevcut Flutter veya native uygulamanız için OWASP Mobile Top 10 eksenli güvenlik denetimi ve sıkılaştırma çalışması yapıyoruz. Uygulamanızın dışarıdan nasıl göründüğünü merak ediyorsanız iletişime geçin.

📅 Yayınlanma:  ·  Yakup Zengin