
Mobil uygulamalar, geliştiricinin kontrolü dışındaki bir ortamda çalışır: Cihaz kaybolabilir, işletim sisteminin koruması kırılabilir (jailbreak veya root), uygulama paketi indirilip incelenebilir, ağ trafiği izlenebilir. Üstelik uygulamanın arkasındaki API'ler internetteki herkesin ulaşabildiği kapılardır. Bu nedenle mobil güvenlik yalnızca uygulamanın içini değil; kimlik doğrulamadan arka uca, üçüncü taraf kütüphanelerden kişisel veri yönetimine kadar tüm zinciri kapsar. Bu rehberde OWASP'ın mobil güvenlik çalışmalarını temel alarak geliştirme sürecinin her aşamasında uygulanabilecek önlemleri ve KVKK açısından dikkat edilmesi gerekenleri ele alıyoruz.
Mobil Uygulamaları Tehdit Eden Başlıca Riskler (OWASP Mobile Top 10)
OWASP (Open Worldwide Application Security Project), uygulama güvenliği alanında çalışan kâr amacı gütmeyen bir topluluktur. Mobil uygulamalar için yayımladığı Mobile Top 10 listesi en kritik risk alanlarını özetler; daha ayrıntılı bir çerçeve arayanlar için MASVS (mobil uygulama güvenliği doğrulama standardı) ve MASTG (mobil uygulama güvenlik testi rehberi) başvuru kaynaklarıdır. Güncel listede şu başlıklar yer alır:
- Uygunsuz kimlik bilgisi kullanımı: Uygulama koduna gömülmüş API anahtarları ve parolalar, yanlış saklanan erişim belirteçleri.
- Yetersiz tedarik zinciri güvenliği: Güvenilmeyen veya güncellenmeyen üçüncü taraf kütüphane ve SDK'lar, korunmayan derleme ve dağıtım süreçleri.
- Güvensiz kimlik doğrulama ve yetkilendirme: Zayıf oturum yönetimi, yetki kontrolünün yalnızca istemcide yapılması.
- Yetersiz girdi ve çıktı doğrulama: Kullanıcıdan veya dış kaynaktan gelen verinin doğrulanmaması sonucu enjeksiyon ve benzeri saldırılar.
- Güvensiz iletişim: Şifrelenmemiş veya sertifikası doğru doğrulanmayan ağ trafiği.
- Yetersiz gizlilik kontrolleri: Kişisel verinin gereğinden fazla toplanması, günlüklere veya üçüncü taraflara sızması.
- Yetersiz ikili kod koruması: Uygulamanın kolayca tersine mühendislikle incelenmesi veya değiştirilerek yeniden dağıtılması.
- Güvenlik yanlış yapılandırması: Açık bırakılmış hata ayıklama ayarları, gereksiz izinler, dışa açık bileşenler.
- Güvensiz veri saklama: Hassas verinin cihazda şifresiz dosyalarda, önbellekte veya yedeklerde tutulması.
- Yetersiz kriptografi: Zayıf veya yanlış kullanılan şifreleme algoritmaları ve hatalı anahtar yönetimi.
Bu liste bir kontrol çerçevesidir, tek başına bir güvenlik programı değildir. Uygulamanızın işlediği verinin hassasiyetine göre hangi başlıkların öncelikli olduğunu belirleyen kısa bir tehdit modellemesiyle başlamak, kaynakları doğru yere harcamanızı sağlar.
Güvenli Kimlik Doğrulama ve Oturum Yönetimi
- Standart protokoller kullanın: Kimlik doğrulamayı kendiniz icat etmeyin. OAuth 2.0 ve OpenID Connect, mobil uygulamalarda PKCE uzantısıyla birlikte kullanılmalıdır. Uygulamanın içine istemci gizli anahtarı koymayın; mobil uygulama paketindeki her bilgi okunabilir kabul edilmelidir.
- Kısa ömürlü erişim belirteçleri: Erişim belirteçlerini kısa süreli tutun, yenileme belirteçlerini güvenli depoda saklayın ve kullanıldıkça yenileyin. Şüpheli bir durumda sunucu tarafında kullanıcının tüm oturumlarını sonlandırabilme imkânı olsun.
- Yetkilendirmeyi sunucuda yapın: Kullanıcının bir kaydı görüp göremeyeceği, arayüzde düğmenin gizlenmesiyle değil, API'nin her istekte yetkiyi kontrol etmesiyle belirlenir. İstekteki sipariş veya müşteri numarası değiştirilerek başka bir kullanıcının verisine ulaşılabilen API'ler, sahada en sık karşılaştığımız ciddi açıklardandır.
- Çok faktörlü doğrulama ve biyometri: Ödeme, şifre değişikliği ve hassas veri görüntüleme gibi kritik işlemler için ek doğrulama isteyin. Biyometrik doğrulama, platformun güvenli donanımına bağlı anahtarlarla birlikte kullanılmalıdır; yalnızca başarılı ya da başarısız sonucu döndüren basit bir kontrol atlatılabilir. Geçiş anahtarları (passkey) parolasız ve kimlik avına dayanıklı bir seçenektir. Ayrıntılar için MFA ve şifre güvenliği rehberimize göz atabilirsiniz.
- Kaba kuvvet koruması: Giriş, şifre sıfırlama ve doğrulama kodu uç noktalarında deneme sınırı ve kademeli bekleme süresi uygulayın.
Veri Şifreleme ve Cihazda Güvenli Saklama
İlk kural, cihazda saklanması gerekmeyen veriyi hiç saklamamaktır. Saklanması gerekenler için:
- Platformun güvenli depolarını kullanın: Belirteç, anahtar ve parola gibi sırlar iOS'ta Keychain, Android'de Keystore destekli mekanizmalarla saklanmalıdır. Düz metin tercih dosyaları, şifresiz yerel veritabanları veya paylaşılan depolama alanları bu amaçla kullanılmamalıdır.
- Yerel veritabanını şifreleyin: Çevrimdışı çalışan uygulamalarda cihazda tutulan müşteri veya sipariş verisi şifrelenmeli, anahtar güvenli depoda tutulmalıdır.
- Sızıntı noktalarını kapatın: Günlük kayıtları, çökme raporları, önbellek, pano, uygulama değiştiricide görünen ekran görüntüleri ve cihaz yedekleri hassas veri içermemelidir. Hassas ekranlarda ekran görüntüsünü engellemek veya arka plana geçişte içeriği gizlemek değerlendirilmelidir.
- İletişimi şifreleyin: Tüm trafik güncel TLS ile şifrelenmeli; iOS'ta App Transport Security, Android'de ağ güvenliği yapılandırması ile şifresiz bağlantılar engellenmelidir. Sertifika sabitleme (pinning) yüksek riskli uygulamalarda ek koruma sağlar; ancak sertifika yenileme süreci iyi yönetilmezse uygulamanın bağlantısını tamamen kesebileceği için planlı uygulanmalıdır.
- Kriptografiyi kendiniz yazmayın: Platformun ve güvenilir kütüphanelerin sunduğu güncel algoritmaları kullanın; anahtarları kaynak kod içinde tutmayın.
API ve Arka Uç Güvenliği
Mobil uygulama güvenliğinin büyük kısmı aslında sunucu tarafında belirlenir. Saldırgan uygulamayı atlayıp doğrudan API'nizle konuşabilir; bu nedenle istemciden gelen hiçbir veriye koşulsuz güvenilmemelidir.
- Her uç noktada kimlik doğrulama ve nesne düzeyinde yetki kontrolü yapın.
- Yanıtlarda yalnızca ekranın ihtiyaç duyduğu alanları döndürün; tüm kullanıcı nesnesini gönderip arayüzde filtrelemek veri sızıntısına yol açar.
- Hız sınırlama, istek boyutu sınırları ve sunucu tarafı girdi doğrulaması uygulayın.
- Üçüncü taraf servis anahtarlarını mobil uygulamada değil sunucuda tutun; uygulama gerekli işlemi arka uç üzerinden yapsın.
- Uygulama bütünlüğünü doğrulamak için Apple'ın App Attest ve Google'ın Play Integrity servislerini değerlendirin; böylece API'ye gelen isteğin değiştirilmemiş uygulamanızdan geldiğini doğrulayabilirsiniz.
- API ağ geçidi, web uygulama güvenlik duvarı, merkezi günlükleme ve anormal trafik uyarıları kurun.
- API'ler için OWASP API Security Top 10 listesini ayrı bir kontrol çerçevesi olarak kullanın.
Web uygulamaları ve sunucu tarafı için daha kapsamlı bir kontrol listesi web uygulaması güvenliği yazımızda yer alıyor.
Kod Koruma, Güvenlik Testi ve Sızma Testi
Kod koruma
- Android'de R8 gibi araçlarla kod küçültme ve karartma (obfuscation) uygulayın; hata ayıklama sembollerini yayın paketinden ayırın.
- Finans, sağlık ve ödeme gibi yüksek riskli uygulamalarda root ve jailbreak tespiti, kurcalama tespiti ve çalışma zamanı koruması (RASP) ekleyin. Bu önlemler kararlı bir saldırganı tamamen durdurmaz, ancak saldırının maliyetini ve süresini artırır.
- Yayın paketinde hata ayıklama ayarlarının kapalı olduğunu, gereksiz izinlerin ve dışa açık bileşenlerin bulunmadığını kontrol edin.
Güvenlik testi
- Statik analiz (SAST): Kaynak kodu güvenlik açıklarına karşı otomatik tarayın ve bunu sürekli entegrasyon sürecine ekleyin.
- Bağımlılık analizi (SCA): Kullanılan kütüphanelerin bilinen açıklarını ve lisanslarını izleyin; yazılım malzeme listesi (SBOM) tutun.
- Dinamik analiz (DAST): Çalışan uygulamayı ve API'yi dışarıdan test edin.
- Sızma testi: İlk yayından önce ve büyük değişikliklerden sonra, uygulama ile arka ucu birlikte kapsayan bağımsız bir sızma testi yaptırın. Sürecin nasıl işlediğini sızma testi rehberimizde anlattık.
Güvenlik testini yalnızca yayın öncesine sıkıştırmak yerine güvenli yazılım geliştirme yaşam döngüsü yaklaşımıyla tasarımdan bakıma her aşamaya yaymak ve geliştiricilere düzenli güvenli kodlama eğitimi vermek, açıkları hem daha erken bulmayı hem de daha düşük maliyetle kapatmayı sağlar.
Güncelleme Yönetimi ve Kullanıcı Bilinçlendirme
Açığı kapatan sürümü yayınlamak işin yalnızca yarısıdır; kullanıcıların bu sürüme gerçekten geçmesi de sağlanmalıdır.
- Desteklenen en düşük sürüm: Uygulama açılışta sunucudan desteklenen en düşük sürüm bilgisini alsın; kritik bir açık kapatıldığında eski sürümdeki kullanıcılar güncellemeye yönlendirilsin. Android'de uygulama içi güncelleme özelliği bu akışı kolaylaştırır.
- Hızlı yama süreci: Bağımlılık uyarılarını ve platform güvenlik bültenlerini düzenli izleyin; kritik açıklar için olağan sürüm takvimini beklemeyen bir acil yayın süreci tanımlayın.
- Kullanıcıyı bilgilendirme: Uygulamanın parola veya doğrulama kodunu hiçbir zaman SMS, e-posta ya da telefonla istemeyeceğini uygulama içinde açıkça belirtin. Yeni cihazdan giriş ve parola değişikliği gibi olaylarda kullanıcıya bildirim göndermek, hesabın ele geçirildiğini fark etmesini kolaylaştırır.
- Güvenli kullanım ipuçları: Ekran kilidi kullanmak, uygulamayı yalnızca resmi mağazadan indirmek ve şüpheli bağlantılara tıklamamak gibi kısa hatırlatmalar, ilk kullanım ekranlarında veya yardım bölümünde yer alabilir.
KVKK Açısından Mobil Uygulamalar
6698 sayılı Kişisel Verilerin Korunması Kanunu, kişisel veri işleyen mobil uygulamalar için de tüm yükümlülükleriyle geçerlidir. Uygulamayı yayınlayan şirket genellikle veri sorumlusudur ve toplanan her verinin hukuki dayanağını, amacını ve saklama süresini bilmek zorundadır.
- Aydınlatma: Hangi verinin hangi amaçla işlendiği, kimlere aktarıldığı ve kullanıcının hakları, uygulama içinden kolayca erişilebilen bir aydınlatma metniyle anlatılmalıdır.
- Açık rıza ve ayrı onaylar: Pazarlama iletileri gibi açık rıza gerektiren işlemler için rıza, hizmet sözleşmesinin içine gömülmeden ayrıca alınmalıdır. Açık rızanın gerekmediği durumlarda gereksiz yere rıza istemek de doğru bir uygulama değildir.
- Veri minimizasyonu ve izinler: Konum, rehber, kamera ve mikrofon gibi izinler yalnızca ilgili özellik kullanılacağı zaman ve gerçekten gerekiyorsa istenmelidir.
- Üçüncü taraf SDK'lar: Analitik, reklam ve çökme raporlama araçları kişisel veriyi yurt dışındaki sunuculara aktarıyor olabilir. Bu aktarımlar KVKK'nın yurt dışına aktarım kuralları çerçevesinde değerlendirilmeli ve aydınlatma metninde yer almalıdır.
- Hesap silme ve veri sahibi talepleri: Kullanıcının hesabını ve verilerini silme talebi uygulama içinden başlatılabilmelidir; bu aynı zamanda mağaza kurallarının da gereğidir.
- Veri güvenliği tedbirleri: Kanun, veri sorumlusuna kişisel verilere hukuka aykırı erişimi önlemek için gerekli teknik ve idari tedbirleri alma yükümlülüğü getirir. Bu yazıdaki önlemler, bu yükümlülüğün mobil tarafını oluşturur.
Genel çerçeve ve kontrol listesi için KVKK uyum rehberimize göz atabilirsiniz.
Güvenlik Kontrol Listesi ve Sık Yapılan Hatalar
Yayın öncesi kontrol listesi
- Uygulama paketinde API anahtarı, parola veya gizli anahtar yok.
- Tüm trafik TLS ile şifreli; şifresiz bağlantılara izin verilmiyor.
- Belirteçler ve sırlar Keychain veya Keystore destekli depoda.
- Günlüklerde, önbellekte ve yedeklerde hassas veri yok.
- Her API uç noktasında sunucu tarafı yetki kontrolü var.
- Giriş ve doğrulama uç noktalarında deneme sınırı uygulanıyor.
- Üçüncü taraf kütüphaneler güncel ve bilinen kritik açık içermiyor.
- Hata ayıklama ayarları kapalı, gereksiz izinler kaldırılmış.
- Aydınlatma metni, mağaza gizlilik beyanları ve SDK'ların topladığı veri birbiriyle uyumlu.
- Kritik sürüm için sızma testi yapılmış ve bulgular kapatılmış.
Sık yapılan hatalar
- Güvenliği yalnızca istemci tarafında kontrol edip API'yi korumasız bırakmak.
- Test ortamı adreslerini veya anahtarlarını yayın paketinde unutmak.
- Kullanıcı verisini hata ayıklama amacıyla günlüklere yazmak.
- Eski kütüphaneleri güncellememek ve bakımı bırakılmış SDK'lara bağımlı kalmak.
- Sertifika sabitlemeyi yenileme planı olmadan uygulayıp uygulamayı kullanılamaz hale getirmek.
- Güvenlik testini yalnızca ilk sürümde yapıp sonraki güncellemelerde tekrarlamamak.
Ümraniye Bilişim olarak mobil uygulama geliştirme hizmetimizde güvenliği tasarım aşamasından başlayarak geliştirme, test ve bakım süreçlerinin ayrılmaz bir parçası olarak ele alıyoruz.
Sonuç
Mobil uygulama güvenliği tek bir araçla ya da yayın öncesi yapılan tek bir testle sağlanmaz; kimlik doğrulama, cihazda veri saklama, iletişim, API, kod koruma ve kişisel veri yönetimi birlikte ele alındığında anlam kazanır. OWASP'ın mobil ve API listeleri bu çalışma için sağlam bir kontrol çerçevesi sunar. Mevcut uygulamanızın güvenlik durumunu değerlendirmek veya yeni projenizi güvenli temeller üzerine kurmak için ücretsiz ön görüşme için bize ulaşın.
Sık sorulan sorular
OWASP topluluğunun mobil uygulamalardaki en kritik güvenlik risklerini özetlediği listedir. Kimlik bilgisi kullanımı, tedarik zinciri, kimlik doğrulama, iletişim, veri saklama ve kriptografi gibi başlıkları kapsar.
Bu konuda yardıma mı ihtiyacınız var?
Uzman ekibimiz işletmenize özel bir değerlendirme hazırlasın.
Ücretsiz Danışmanlıkİlgili hizmetlerimiz
Mobil konusunda işletmenize özel destek için Mobil Uygulama Geliştirme sayfamızı inceleyebilirsiniz.