Mobil Uygulama Güvenliği: OWASP MASVS ile Doğrulama
Mobil uygulama güvenliğinde OWASP MASVS çerçevesi: güvenli veri saklama, TLS ve sertifika sabitleme, WebView riskleri, tersine mühendislik direnci ve yayın öncesi doğrulama listesi.
Mobil uygulama güvenliği neden web güvenliğinden farklıdır?
Mobil uygulamada kodunuz, saldırganın cihazında çalışır: APK/IPA paketi indirilebilir, sökülebilir (decompile), ağ trafiği araya girilerek incelenebilir ve uygulama içine gömdüğünüz her sır okunabilir kabul edilmelidir. Web'de sunucu sizin kontrolünüzdedir; mobilde istemci tarafı düşman bölgededir. Bu fark, güvenlik modelinin baştan farklı kurulmasını gerektirir.
OWASP MASVS: mobil güvenliğin doğrulama standardı
OWASP MASVS (Mobile Application Security Verification Standard), mobil uygulama güvenliğini ölçülebilir gereksinimlere döken açık standarttır; kardeş doküman MASTG ise bu gereksinimlerin nasıl test edileceğini anlatır. Güncel MASVS, gereksinimleri sekiz alanda toplar:
MASVS alanı | Kapsam | Tipik zafiyet |
|---|---|---|
STORAGE | Hassas verinin cihazda saklanması | Token'ın düz metin tercihen (SharedPreferences) yazılması |
CRYPTO | Kriptografi kullanımı | Gömülü sabit anahtar, zayıf algoritma |
AUTH | Kimlik doğrulama ve oturum | Cihazda kalıcı, süresiz oturumlar |
NETWORK | Ağ iletişimi | TLS doğrulamasının kapatılması |
PLATFORM | Platform API'leri, WebView, IPC | Güvensiz WebView, korumasız deep link |
CODE | Kod kalitesi ve derleme ayarları | Debug bayrakları, eski SDK hedefleri |
RESILIENCE | Tersine mühendislik direnci | Obfuscation ve bütünlük kontrolü yokluğu |
PRIVACY | Kullanıcı mahremiyeti | Gereksiz veri ve izin toplama |
STORAGE: cihazdaki veri, cihaz sahibinindir
Temel kural: cihazda saklamak zorunda olmadığınız hassas veriyi saklamayın. Saklamak zorundaysanız platformun donanım destekli mekanizmalarını kullanın: Android'de Keystore sistemi ve şifreli tercihen/dosya API'leri, iOS'ta Keychain. Erişim token'larını düz metin olarak SharedPreferences veya UserDefaults'a yazmak, mobil sızma testlerinin en sık bulgusudur. Loglara hassas veri yazılması da aynı başlığın parçasıdır: üretim derlemelerinde ayrıntılı loglama kapatılmalıdır.
NETWORK: TLS pazarlık konusu değildir
Tüm trafik TLS üzerinden akmalı; geliştirme kolaylığı için sertifika doğrulamasını gevşeten kod parçaları (tüm sertifikalara güvenen TrustManager gibi) üretime asla taşınmamalıdır. Sertifika sabitleme (certificate pinning) araya girme saldırılarına karşı ek koruma sağlar; ancak operasyonel maliyeti vardır — sertifika rotasyonunda uygulamayı kilitlememek için yedek pin ve güncelleme stratejisiyle birlikte planlanmalıdır. Android'de Network Security Config, iOS'ta App Transport Security bu politikaların bildirimsel olarak tanımlanacağı yerlerdir.
PLATFORM: WebView ve deep link kapıları
WebView, mobil uygulamanın içindeki tarayıcıdır ve yanlış yapılandırıldığında web zafiyetlerini uygulamanın yetkileriyle birleştirir: yalnızca gerekliyse JavaScript açılmalı, yerel köprüler (Javascript interface) dar tutulmalı ve WebView'de yalnızca kendi kontrolünüzdeki içerik yüklenmelidir. Deep link ve app link'ler ise dışarıdan gelen komutlardır: parametreleri doğrulanmadan hassas ekranlara yönlendirme yapılmamalı, hassas aksiyonlar ek yetkilendirme istemelidir.
RESILIENCE: caydırıcılık katmanı
Kod karartma (Android'de R8/ProGuard), kök/jailbreak tespiti ve bütünlük kontrolleri, kararlı bir saldırganı durduramaz — bunu MASVS de açıkça söyler. Amaçları saldırının maliyetini yükseltmek ve otomatik/kitlesel kötüye kullanımı caydırmaktır. Bu yüzden doğru sıralama önemlidir: önce STORAGE ve NETWORK gibi temel alanlar sağlamlaştırılır; RESILIENCE üstüne eklenir, hiçbir zaman onların yerine geçmez.
Gömülü sırlar: APK içinde sır olmaz
API anahtarlarını, imza sırlarını veya sabit kimlik bilgilerini uygulama paketine gömmek, onları herkese açık yayımlamakla eşdeğerdir — paket sökme araçlarıyla dakikalar içinde çıkarılır. Doğru mimari: sırların sunucu tarafında kalması, mobil istemcinin kısa ömürlü token'larla çalışması ve üçüncü taraf API çağrılarının mümkün olduğunca kendi backend'iniz üzerinden geçmesidir.
İş etkisi: mağaza güveni ve kurumsal dağıtım
Mobil güvenlik eksikleri iki kanaldan maliyet üretir: veri ihlalinde KVKK/GDPR yükümlülükleri ve marka hasarı; kurumsal müşteri dağıtımlarında ise MDM/güvenlik değerlendirmelerinden geçememe. Bankacılık ve sağlık gibi alanlarda müşteriler MASVS temelli doğrulama raporu sorar hale gelmiştir. Yayın öncesi bağımsız mobil sızma testi, hem bu soruların cevabı hem de mağaza sonrası kriz ihtimalinin sigortasıdır.
Sık sorulan sorular
Sertifika sabitleme zorunlu mu?
MASVS'in temel seviyesi için zorunlu değildir; yüksek riskli uygulamalar (finans, sağlık) için güçlü şekilde önerilir. Yedek pin ve rotasyon planı olmadan uygulanmamalıdır.
Kök tespiti kullanıcıyı engellemeli mi?
Risk iştahınıza bağlıdır: finans uygulamaları çoğunlukla engeller veya işlevleri kısıtlar; diğerleri riski işaretleyip sunucu tarafında ek kontrole bağlar. Tespitin aşılabilir olduğu unutulmamalıdır.
Biyometrik doğrulama parolanın yerini alır mı?
Biyometri cihaz düzeyinde pratik bir ikinci faktördür; sunucu tarafındaki kimlik doğrulamanın yerine değil, yanına konumlanmalıdır. Kriptografik anahtarların biyometriyle korunması (Keystore/Keychain) doğru kullanımdır.
Flutter/React Native güvenliği değiştirir mi?
Çapraz platform çatılar temel ilkeleri değiştirmez: veri saklama, TLS, sır yönetimi ve platform API kuralları aynen geçerlidir; ek olarak çatının kendi paket ekosisteminin bağımlılık riski yönetilmelidir.
Yayın öncesi doğrulama listesi
Cihazda saklanan hassas veri envanteri çıkarıldı; gereksizler kaldırıldı
Kalan hassas veriler Keystore/Keychain destekli mekanizmalarda
Üretimde TLS doğrulaması tam; geliştirme amaçlı gevşetmeler temizlendi
WebView yapılandırması ve deep link parametre doğrulaması gözden geçirildi
Pakette gömülü sır taraması yapıldı; sırlar backend'e taşındı
Üretim derlemesi: debug kapalı, loglar kısıtlı, karartma açık
MASVS temelli sızma testi raporu alındı
SSH Yazılım, mobil uygulamalarınız için MASVS temelli güvenlik değerlendirmesi ve sıkılaştırma hizmeti sunar. Yayın öncesi doğrulama için bizimle iletişime geçin.