Mobil Uygulama Sızma Testi: Kapsam, Süre ve Rapor Rehberi
mobil uygulama güvenliği

Mobil Uygulama Sızma Testi: Kapsam, Süre ve Rapor Rehberi

Mobil uygulama sızma testi üç ayrı yüzeyden oluşuyor: cihazdaki istemci, yerel veri ve sunucu tarafı. Kapsam, MASVS profili, gün hesabı ve kanıt standardı ile birlikte.

Siber Güvenlik Ekibi
16 dk okuma
Konular
sızma testi
MASVS
MASTG
API güvenliği
mobil uygulama testi

Mobil uygulama sızma testi, çoğu ekipte "web testinin mobil sürümü" olarak bütçeleniyor ve tam olarak bu yüzden yanlış sonuç veriyor. Bir mobil uygulama üç ayrı saldırı yüzeyinden oluşuyor: kontrol etmediğiniz bir cihazda çalışan istemci, o cihazda kalan yerel veri, ve uygulamanın konuştuğu sunucu tarafı. Üçünü ayrı ayrı test etmeden alınan rapor, genellikle yalnızca üçüncü yüzeyi anlatıyor ve iki yüzeyi sessizce kapsam dışında bırakıyor.

Bu rehber, satın alma tarafındaki soruya cevap veriyor: kapsam nasıl yazılır, hangi test hangi bulguyu üretir, ne kadar sürer, raporda neyi görmek gerekir, ve hangi bulgu gerçekten risk taşır. Ürün adı ya da sağlayıcı sıralaması yok; çünkü mobil testin kalitesi araçtan değil, kapsam kararlarından geliyor.

Baştan bir uyarı: mobil uygulamalarda istemci tarafındaki kontrollerin hiçbiri güvenlik sınırı değil. Kök tespiti, jailbreak kontrolü, kod karartma, sertifika sabitleme - hepsi saldırganın maliyetini artırır, erişimini engellemez. Yetki kontrolünün tek gerçek yeri sunucu. OWASP MASVS de bunu açıkça söylüyor: kimlik doğrulama ve yetkilendirme mekanizmalarının uygulanması uzak uç noktada olmalı. Bir raporda "pinning var" cümlesi bir bulgu değil, bir gecikme.

Uzaktan İzleme Teklifleri

Uzaktan İzleme Teklifleri

Sphnix ile başlayın ve mSpy ile Eyezy'yi karşılaştırın.

Kapsam: MASVS profilleri ve ne anlama geldikleri

Mobil testin ortak dili OWASP MASVS (Mobile Application Security Verification Standard) ve ona bağlı MASTG test rehberi. MASVS kontrol listesini veriyor, MASTG her kontrolün nasıl test edileceğini. Sözleşmeye yazılması gereken şey "MASVS'e uygun test" değil, hangi test profilinin seçildiği.

Üç profil var. MAS-L1, tüm uygulamalar için önerilen temel seviye: depolama, kriptografi, kimlik doğrulama, ağ iletişimi, platform etkileşimi ve kod kalitesi kontrollerinin standart hâli. MAS-L2, cihazın ele geçirilmiş varsayıldığı savunma derinliği seviyesi; sağlık ve finans gibi hassas veri taşıyan uygulamalar için. MAS-R ise tersine mühendislik ve kurcalamaya karşı dayanıklılık: kod karartma, bütünlük kontrolü, hata ayıklama engelleme.

Profil seçimi bütçeyi doğrudan belirliyor, çünkü R seviyesi ayrı bir iş kalemi. Bir e-ticaret uygulaması için L1 genellikle yeterliyken, ödeme akışı barındıran bir uygulamada L2 beklenir; bankacılık benzeri bir uygulamada R de eklenir. Kapsam yazarken "L2 + R" ifadesinin yanına hangi kontrollerin kapsam dışı bırakıldığını da yazmak gerekiyor - aksi hâlde rapor geldiğinde tartışma profil üzerinden değil, beklenti üzerinden çıkıyor.

MASVS kategorisiNeyi kapsıyorTipik bulgu
STORAGECihazda saklanan veri, yedekler, günlüklerDüz metin parola, yedekte okunabilir veritabanı, günlükte oturum belirteci
CRYPTOAnahtar üretimi, saklama, kullanılan algoritmalarSabit anahtar, ECB modu, zayıf rastgelelik
AUTHOturum, biyometri, uzak uç noktada yetkiİstemcide yetki kararı, süresiz belirteç, biyometri sonrası yeniden kimlik doğrulama yokluğu
NETWORKTLS yapılandırması, sabitleme, trafiğin açığa çıkmasıSabitleme yok, ATS istisnası, hassas veri sorgu dizesinde
PLATFORMBileşenler, izinler, derin bağlantılar, WebViewDışa açık bileşen, doğrulanmamış derin bağlantı, WebView içinde JavaScript köprüsü
CODEGirdi doğrulama, bellek, hata yönetimi, bağımlılıklarHata ayıklama bayrağı açık, eski kütüphane, yığın izi sızıntısı
RESILIENCEKurcalama ve tersine mühendislik direnciKök tespiti yok, bütünlük kontrolü yok, kolayca yamalanabilir
PRIVACYVeri minimizasyonu, izinler, üçüncü taraf SDK'larGereksiz izin, analitik SDK'ya kimlik sızıntısı

Trafik yakalama ve sertifika sabitleme: sözleşmede karara bağlanması gereken madde

Mobil testin ilk teknik engeli, uygulamanın trafiğini araya girerek okumak. Sunucu sertifikasını doğrulayan ve sertifikayı uygulamanın içine gömen bir uygulama, vekil sunucu kullanılarak okunamıyor. Bu iyi bir savunma, ama testin ilk adımını bloke ediyor. Çözüm iki tanesi: test için sabitlemesi kapalı bir derleme almak, ya da sabitlemeyi cihaz üzerinde dinamik olarak atlatmak.

İkinci yol, yani Frida veya objection ile atlatma, raporun gerçekçiliği açısından daha değerli. Çünkü sabitlemenin atlatılabildiğini göstermek, "sabitleme var" ifadesinin ne kadar koruduğunu ölçüyor. Ama bu iş, sözleşmede açıkça izin verilmeden yapılmamalı: sabitlemeyi atlatmak için cihaza kod enjekte ediliyor, bazı kuruluşlar bunu test kapsamı dışında sayıyor, bazıları ise üretim imzalı derlemede bunu bir olay olarak görüyor. Doğru yazım şu: "sertifika sabitlemesi, test cihazında dinamik enstrümantasyon ile atlatılabilir; atlatma yöntemi ve süresi raporda belgelenir". Bu cümle yoksa, testin ilk günü tartışmayla geçiyor.

Sabitlemenin atlatılabilmesi tek başına bir zafiyet değil; ama şu üç durumda gerçek bir bulgu oluyor. Birincisi, sabitleme yalnızca birkaç alan adına uygulanmışsa ve uygulama diğer uç noktalarla da hassas veri taşıyorsa. İkincisi, atlatma sonrası trafikte oturum belirteci veya kişisel veri açık metin halinde görünüyorsa. Üçüncüsü, sabitleme atlatıldıktan sonra sunucu tarafında hiçbir anormallik sinyali üretilmiyorsa - yani saldırganın araya girmesi tespit edilemiyorsa.

TestNasıl yapılırBulgu sayılan durum
TLS yapılandırmasıVekil sunucu ile bağlantı, protokol ve şifre süiti listesiTLS 1.0/1.1 kabulü, zayıf süit, sertifika doğrulama hatasının yutulması
Sertifika sabitlemeDinamik enstrümantasyon ile atlatma denemesiHiç sabitleme yok; ya da sabitleme yalnızca bir alan adında
Hassas veri konumuTrafikte URL, başlık ve gövde incelemesiBelirteç sorgu dizesinde, parola gövdede düz metin, PII günlüğe yazılıyor
Sunucu tarafı tespitAynı hesaptan iki farklı cihaz/parmak izi ile eşzamanlı istekUyarı, oturum sonlandırma veya adım artırma yok

Cihazda kalan veri: en sık bulunan gerçek zafiyet

Pratikte en çok bulgu üreten kategori depolama, çünkü geliştirme hızı ile veri hijyeni ters orantılı. Bir oturum belirteci hata ayıklama için günlüğe yazılır ve derlemede kalır; bir kullanıcı profili önbelleğe alınır ve yedeklemeye dahil olur; bir ekran görüntüsü koruması yalnızca bir ekranda uygulanır, diğerlerinde uygulama arka plana geçtiğinde içerik sistem tarafından saklanır.

Android tarafında bakılan yerler net: uygulama veri dizini, allowBackup bayrağı, dışa açık dosya sağlayıcıları, network_security_config içindeki güven çapaları, WebView önbelleği, pano kullanımı, ve üçüncü taraf SDK'ların kendi veri dizinleri. iOS tarafında Keychain erişilebilirlik sınıfları belirleyici: kSecAttrAccessibleWhenUnlocked ile saklanan bir öğe, cihaz kilitliyken okunamaz; ama kSecAttrAccessibleAlways ile saklanan aynı öğe yedeklemede ve cihaz kilidi açılmadan erişilebilir. Aynı veri, iki farklı sınıf, iki farklı risk.

Bu kategoride bir bulgunun gerçek risk taşıyıp taşımadığı, verinin ne olduğuna ve cihazın kimin elinde olduğuna bağlı. Kayıp bir telefonda okunabilen bir oturum belirteci, tam bir hesap devralması demek; kaybolan telefonda okunabilen bir kullanıcı adı ise düşük etkili. Raporun bu ayrımı yapması gerekiyor, çünkü "cihazda düz metin veri var" cümlesi tek başına bir eylem maddesi üretmiyor.

YüzeyAndroidiOSTest
Kimlik bilgisi deposuKeystore, EncryptedSharedPreferencesKeychain, erişilebilirlik sınıfıDosya sistemi incelemesi, cihaz yedeği
YedeklemeallowBackup, bulut yedeğiiTunes/iCloud yedeğiYedek al, içeriği ara
Günlüklerlogcat, dosya günlüklerios_log, konsol çıktısıAkışları topla, belirteç ara
Ekran korumasıFLAG_SECUREEkran yakalama algılamaArka plana al, görev değiştiriciyi incele
PanoClipboardManagerUIPasteboardKopyala, başka uygulamada oku
Dışa açık bileşenlerexported activity/service/receiver/providerURL şemaları, uzantılarManifest ve Info.plist incelemesi, çağrı denemesi

Platform bileşenleri ve derin bağlantılar: dışarıdan çağrılabilen kapılar

Mobil uygulamanın web uygulamasında karşılığı olmayan saldırı yüzeyi, işletim sisteminin uygulamaya açtığı kapılar. Android'de dışa açık (exported) bir etkinlik, servis, alıcı veya içerik sağlayıcı, başka bir uygulama tarafından çağrılabilir. iOS'ta kayıtlı URL şemaları ve paylaşım uzantıları aynı işlevi görür. Bir uygulama, kendi kullanıcı arayüzünde hiç göstermediği bir yeteneği bu kapılar üzerinden sunabilir.

Test bu yüzden iki adımlı: manifest ve Info.plist üzerinden dışa açık yüzeyi listelemek, sonra her yüzeyi kötü niyetli bir çağrıyla denemek. Tipik bulgular şunlar: doğrulama yapmadan parametre kabul eden bir etkinlik, oturum kontrolü olmayan bir içerik sağlayıcı, hedef bileşeni çağıran parametre ile belirlenebilen bir yönlendirme, ve derin bağlantı üzerinden gelen bir belirtecin doğrulanmadan kabul edilmesi.

Derin bağlantılar ayrıca hesap devralma zincirinin parçası olabiliyor: bir parola sıfırlama bağlantısı, uygulama tarafından doğrulanmadan işlenirse, saldırgan kendi hazırladığı bağlantıyla kurbanın oturumunu kendi cihazına bağlayabilir. Bu nedenle bağlantı ile gelen her parametre, sunucu tarafında tek kullanımlık ve hedef hesapla eşleşmiş olarak doğrulanmalı.

YüzeyTestBulgu
Dışa açık etkinlikadb veya özel bir uygulama ile çağrı, parametre enjeksiyonuDoğrulanmamış parametre, oturum kontrolü yokluğu
İçerik sağlayıcıDiğer uygulamadan sorgu, yol geçişi denemesiYetkisiz okuma, dosya yolu geçişi
Derin bağlantıSahte bağlantı ile uygulamayı açma, parametre değiştirmeBelirteç doğrulanmadan kabul, açık yönlendirme
WebViewYerel köprü arayüzü çağrısı, dosya şeması erişimiJavaScript köprüsü ile yerel yetenek çağrısı
İzinlerİzin setini amaca göre karşılaştırmaGereksiz konum, kişi, depolama izni - gizlilik bulgusu

WebView kalemi ayrı duruyor, çünkü mobil uygulamada web içeriği göstermek neredeyse her uygulamada var ve yerel köprü arayüzü eklemek kolay. Köprü açıksa, yüklenen her sayfa - reklam ağı dahil - yerel yetenekleri çağırabilir. Bu, uygulamanın kendi kodundaki en ciddi zafiyetlerden biri olabiliyor ve genellikle test edilmeden yayına çıkıyor.

Sunucu tarafı: mobil uygulamanın gerçek güvenlik sınırı

İstemci tarafındaki tüm bulguların toplamı, sunucu tarafındaki tek bir yetkilendirme hatasının yanında küçük kalıyor. Mobil uygulamalar API tüketiyor ve API'lerde en yaygın ciddi hata, nesne düzeyinde yetkilendirme eksikliği: istemci bir kayıt kimliği gönderiyor, sunucu o kaydın istekte bulunan kullanıcıya ait olup olmadığını kontrol etmeden döndürüyor. Uygulamada bu hata görünmez, çünkü arayüz yalnızca kendi kayıtlarınızı listeliyor; ama istek elle değiştirildiğinde başka bir kullanıcının verisi geliyor.

Bu nedenle mobil test, API testinden ayrı düşünülemez. Aynı uygulama için yapılan testte iki farklı kapsam var: cihazdaki istemci davranışı ve API'nin yetki modeli. İkincisi için gereken şey, rollerin ve nesnelerin bir matrisi: kaç rol var, her rol hangi nesneye hangi işlemi yapabiliyor, ve bu matris testte tek tek deneniyor mu. Üç rollü bir uygulamada beş nesne türü varsa, denenecek kombinasyon sayısı on beş; bu, bir günlük iş.

API testiNe aranırNasıl denenir
Nesne düzeyinde yetkiKimliği değiştirince veri geliyor muİki hesapla aynı istek, kimlik alanı değiştirilir
İşlev düzeyinde yetkiDüşük rollü kullanıcı yönetici uç noktasını çağırabiliyor muRol matrisi üzerinden her uç nokta denenir
Belirteç ömrü ve yenilemeEski belirteç hâlâ geçerli mi, yenileme döndürülebilir miÇıkış sonrası istek, yenileme tekrar kullanımı
Hız sınırıParola denemesi ve doğrulama kodu sınırsız mıOtomatik istek, yanıt farkı ölçümü
İş mantığıNegatif tutar, tekrar kullanılan kupon, atlanan adımAkışın adımlarını sırayla atlamak
Toplu atamaİstemcinin göndermediği alan gövdeye eklenince kabul ediliyor muKayıt güncelleme isteğine fazladan alan ekleme

İş mantığı satırı, otomatik araçların en çok kaçırdığı yer ve manuel testin asıl değeri burada ortaya çıkıyor. Bir kupon kodunun aynı sepette iki kez uygulanması, bir iade akışının yarım bırakılıp yeniden başlatılması, bir abonelik yükseltmesinin ödeme adımı atlanarak tamamlanması - bunlar tarayıcı ya da mobil araç taramasıyla bulunmuyor, akışı anlayan birinin denemesiyle bulunuyor. Bu yüzden "otomatik tarama + rapor" paketleri mobilde dar kapsamlı kalıyor; otomasyon yalnızca tekrarlayan kontrolleri hızlandırıyor.

Süre ve efor: bir mobil testin gün hesabı

Mobil test fiyatlaması, çoğu teklifte "uygulama başına" bir sayı olarak veriliyor ve bu, kapsam farklarını gizliyor. Aşağıdaki model, gerçek bir kapsamı gün gün açıyor: iki platform (Android + iOS), 40 API uç noktası, üç rol, MAS-L2 + R profili, ve bir yeniden test.

İş kalemiGünNeye bağlı
Kapsam, izin ve ortam hazırlığı1Test hesapları, test derlemesi, cihaz seti
Statik analiz (iki platform)1,5Kod karartma, bileşen sayısı
Dinamik test - Android3Ekran sayısı, SDK sayısı
Dinamik test - iOS3Aynı
API yetki ve iş mantığı3Uç nokta sayısı, rol sayısı
Dayanıklılık (R profili)1,5Karartma, bütünlük, kök tespiti
Rapor ve bulgu doğrulama1,5Bulgu sayısı, kanıt standardı
Yeniden test1Düzeltilen bulgu sayısı

Toplam on dört buçuk iş günü. Aynı uygulama tek platform olsaydı ve API kapsamı olmasaydı, süre altı güne inerdi; iki platformlu ama API'siz bir test ise sekiz buçuk gün. Bu fark, "uygulama başına sabit fiyat" teklifinin neden karşılaştırılamaz olduğunu gösteriyor: iki teklif aynı sayıyı söylerken biri altı, diğeri on dört günlük iş kapsıyor olabilir.

Teklifi okurken sorulacak üç soru var. Birincisi: kaç platform, hangi cihaz sürümleri? İkincisi: API kapsamı var mı, kaç uç nokta ve kaç rol üzerinden? Üçüncüsü: yeniden test dahil mi, kaç tur? Bu üç cevap yoksa fiyat bir bilgi taşımıyor. Aynı mantık, hizmeti satın alan tarafın iç bütçe çıkarırken de geçerli; sızma testi fiyatlarının nasıl belirlendiği yazısı bu kalemleri genel çerçevede açıyor, buradaki fark mobilin kendi efor kalemleri.

Kapsam dışı kalanlar: sözleşmede açıkça yazılması gerekenler

Bir mobil test sözleşmesinde en çok tartışma yaratan şey, testin neyi kapsamadığı. Bunların baştan yazılması, hem satın alan hem test eden için koruma; sonradan çıkan bir bulgu "kapsam dışıydı" cümlesiyle kapanmamalı, çünkü o cümle riski ortadan kaldırmıyor, yalnızca sorumluluğu kaydırıyor.

Kapsam dışıNedenNasıl kapatılır
Üçüncü taraf SDK'ların sunucularıYetkiniz yok, sağlayıcı sorumluluğundaSDK envanteri ve izin listesi ayrı bir gizlilik incelemesi
Mağaza hesabı ve dağıtım hattıFarklı bir yetki alanıİmza anahtarı yönetimi ve CI erişimi ayrı denetim
Sunucu altyapısı ve ağAyrı kapsam, ayrı izinAltyapı testi veya bulut yapılandırma denetimi
Ödeme kartı verisi işlemePCI DSS kapsamıÖdeme sağlayıcısının uyumluluk beyanı
Sosyal mühendislikİnsan odaklı, ayrı yöntemAyrı bir farkındalık ve oltalama programı
Kaynak kodu incelemesiStatik analizden farklı eforKod incelemesi kalemi olarak eklenir

Bu tabloyu teklifin ekinde görmek, satın alan için bir kalite işareti. Kapsam dışı listesi olmayan teklifler genellikle iki uçtan birinde: ya her şeyi kapsadığını ima ediyor - ki bu doğru olamaz - ya da sınırları hiç düşünmemiş. İkisi de proje sırasında sürtünme üretiyor.

Sızma testi, güvenlik değerlendirmesi ve otomatik tarama arasındaki fark

Aynı uygulama için üç farklı hizmet satın alınabiliyor ve üçü farklı soruları cevaplıyor. Karıştırıldıklarında iki sonuç çıkıyor: ya bir güvenlik değerlendirmesi "test yapıldı" diye kapatılıyor, ya da bir sızma testinden olgunluk değerlendirmesi bekleniyor.

Sızma testi, belirli bir süre içinde gerçek bir saldırganın yapacağı işi yapıyor: zincir kuruyor, bir bulguyu diğerine bağlıyor, en sonunda ne kadar ileri gidebildiğini gösteriyor. Çıktısı bulgu listesi ve kanıt. Güvenlik değerlendirmesi ise daha geniş bir çerçeve: mimari, süreç, yapılandırma ve kontrollerin olgunluğunu ölçüyor, bulgu üretmekten çok yol haritası çıkarıyor. Otomatik tarama ise yalnızca bilinen desenleri arıyor; hızlı, ucuz ve tekrarlanabilir, ama iş mantığı ve yetki zinciri gibi konularda sessiz.

HizmetCevapladığı soruÇıktıSüre
Otomatik taramaBilinen zayıf desenler var mıAraç raporu, yüksek gürültüSaatler
Güvenlik değerlendirmesiKontroller yeterli mi, olgunluk neredeOlgunluk değerlendirmesi, yol haritası3-5 gün
Sızma testiGerçekten ne kadar ileri gidilebilirZincirlenmiş bulgular, kanıt, önem derecesi6-14 gün
Kod incelemesiKaynakta hangi hata varSatır düzeyinde bulgu, düzeltme önerisi5-10 gün

Bu tablodaki en pahalı hata, otomatik taramayı sızma testi yerine koymak. Bir tarama aracı, ekranda görünmeyen bir yetki hatasını bulamıyor; çünkü araç isteği sizin oturumunuzla gönderiyor ve sunucunun döndürdüğü veriyi "başarılı yanıt" olarak işaretliyor. Aynı isteği başka bir kullanıcının kimliğiyle göndermek, bir insanın kararı. İki saatlik bir tarama ile iki günlük bir manuel API testi arasındaki fark tam olarak bu.

Doğru sıralama genellikle şu: sürüm öncesi otomatik tarama, yılda bir güvenlik değerlendirmesi, kritik sürümlerde sızma testi, ve yüksek riskli bileşenlerde kod incelemesi. Bu sıralamanın bütçesi, tek seferlik büyük bir testten daha düşük ve yıl boyunca daha fazla bilgi üretiyor. Bir kuruluşun yıllık güvenlik takvimini bu dört kalem üzerine kurması, tek bir "yıllık test" satırından daha savunulabilir; olay sonrası süreç de bu takvimin parçası olmalı, olay müdahale planı bu bağlantıyı kuruyor.

Rapor: kanıt standardı ve yeniden test

Bir mobil test raporunun değeri, bulgu sayısıyla değil, her bulgunun yeniden üretilebilir olmasıyla ölçülür. Yeniden üretilebilir bulgu, uygulamanın hangi sürümünde, hangi cihazda, hangi adımlarla ortaya çıktığını ve neyin yanlış gittiğini gösteren bir kanıt zinciri demek: istek ve yanıt, ekran görüntüsü veya ekran kaydı, gerekliyse enstrümantasyon betiği.

Raporun ikinci kalitesi, bulguları MASVS kategorileriyle eşlemesi ve her bulguya bir önem derecesi vermesi. CVSS taban puanı faydalı ama tek başına yetersiz, çünkü aynı teknik zafiyetin mobildeki etkisi bağlama göre değişiyor: kayıp bir cihazda okunabilen oturum belirteci ile internete açık bir uç noktadan sızan aynı belirteç, aynı puanı alabilir ama farklı aciliyet taşır.

Üçüncü kalite, düzeltme önerisinin uygulanabilir olması. "Güvenli depolama kullanın" cümlesi bir öneri değil; "oturum belirtecini Keystore destekli EncryptedSharedPreferences içine taşıyın, yenileme belirtecini ayrı tutun, çıkışta her ikisini de silin" cümlesi bir öneri. Bu ayrım, raporun geliştirici tarafından ne kadar kullanılabildiğini belirliyor ve çoğu zaman testin gerçek getirisi buradan geliyor.

Yeniden test ise kapanışın şartı. Düzeltilen bulguların gerçekten düzeldiğini doğrulamak, yeni bir bulgu eklemeden yalnızca eski bulgular üzerinden ilerlemek demek; yeni bir sürümde yeni yüzeyler açıldıysa bu ayrı bir test turu. Sözleşmede "bir yeniden test turu dahil" yazıyorsa, bu turun kapsamı da yazılmalı: hangi bulgular, hangi sürüm, hangi süre içinde.

Yetkilendirme: testin hukuki çerçevesi

Mobil test, yetkisiz yapıldığında suç; yetkili yapıldığında bile sınırları aşarsa yine suç. Türk Ceza Kanunu'nun 243. maddesi bilişim sistemine girme fiilini düzenliyor ve izin sınırını aşan erişim bu kapsama girebiliyor. Bu yüzden izin, "test yapabilirsiniz" cümlesi değil; sistem, zaman aralığı, test hesapları ve yöntem sınırlarını içeren yazılı bir kapsam olmalı.

Mobilde bu kapsamın dört özel kalemi var. Birincisi, uygulamanın hangi sürümü ve hangi ortamı test ediliyor: üretim, hazırlık (staging) veya ikisi. İkincisi, hangi hesaplar kullanılacak ve bu hesaplar gerçek kullanıcı verisine erişecek mi. Üçüncüsü, cihaz tarafında kod enstrümantasyonu ve sabitleme atlatma izni var mı. Dördüncüsü, test sırasında elde edilen verinin nasıl saklanacağı ve ne zaman silineceği.

İkinci kalem, KVKK tarafındaki asıl riski taşıyor. Test ortamı gerçek kullanıcı verisinin kopyasıysa, test sırasında o veriye erişmek işleme fiili demek ve 6698 sayılı Kanun'un 12. maddesi devreye giriyor: verilerin hukuka aykırı işlenmesini ve erişilmesini önlemek, muhafazasını sağlamak veri sorumlusunun yükümlülüğü. Doğru uygulama, test ortamında anonimleştirilmiş veri kullanmak, test hesaplarını gerçek kullanıcılardan ayrı tutmak ve test sırasında toplanan kanıtları (istek/yanıt kayıtları, ekran görüntüleri) kişisel veri içermeyecek biçimde maskelemek. Kanıt dosyaları çoğu zaman bulgudan daha fazla veri taşıyor ve bu dosyalar test bitince paylaşılan klasörlerde kalıyor. Kanıt yönetiminin çerçevesi KVKK teknik tedbirler rehberinde ayrıntılı.

Üçüncü bir hukuki ayrıntı mağaza tarafı: bir uygulamayı mağaza politikalarını test etmek için tersine mühendislikle incelemek, kendi uygulamanız için sorun değil; üçüncü taraf bir uygulama için izin meselesi. Kurumsal tarafta tedarikçiye test yaptırırken bu sınırların sözleşmede yazılması, hem sizi hem tedarikçiyi koruyor; tedarikçi risk rehberi bu maddelerin sözleşmeye nasıl yazılacağını anlatıyor.

İç ekip mi, dış ekip mi: karar ölçütleri

Bu sorunun cevabı bütçe değil, bağımsızlık ve süreklilik dengesi. İç ekip uygulamayı tanıyor, hızlı çalışıyor ve bulguları doğrudan geliştiriciyle konuşabiliyor; ama aynı ekibin yazdığı kodu test etmesi, bilinen kör noktaları tekrar etme riski taşıyor. Dış ekip taze bir bakış getiriyor ve raporun bağımsızlığı denetim açısından değerli; ama uygulamayı öğrenme süresi maliyete giriyor.

Pratikte işleyen model ikisini birleştiriyor: tekrarlayan kontrolleri (statik analiz, bağımlılık taraması, yapılandırma denetimi) iç ekip otomatikleştiriyor, yılda bir veya sürüm atlamalarında bağımsız bir ekip manuel test yapıyor. Bu ayrım, testin sürekliliğini sağlarken bağımsızlığı da koruyor. Regresyon testleri ve sürekli kontrol fikri, red team değerlendirmesinin ölçüm protokolünde daha geniş çerçevede ele alınıyor; mobil test bunun dar ama derin bir dilimi.

Bir de süreklilik kalemi var: mobil uygulamalar iki haftada bir sürüm çıkarıyor. Yılda bir yapılan bir test, yılın geri kalanında ne olduğunu söylemiyor. Bu yüzden testi bir etkinlik değil, sürüm döngüsüne bağlı bir kontrol olarak kurmak gerekiyor: her büyük sürümde otomatik kontroller, yılda bir bağımsız manuel test, ve her yeni üçüncü taraf SDK eklendiğinde gizlilik incelemesi.

Kapanış: on maddelik kontrol listesi

Mobil uygulama testini satın alırken veya planlarken sırasıyla şunlar: test profilini (L1, L2, R) yaz; kapsam dışı listesini teklifin ekinde iste; platform, cihaz sürümü ve API uç nokta sayısını netleştir; sertifika sabitleme atlatma iznini açıkça yaz; test ortamının anonimleştirilmiş olduğunu doğrula; rol ve nesne matrisini test öncesi paylaş; raporda MASVS eşlemesi ve yeniden üretilebilir kanıt iste; yeniden test turunu ve kapsamını sözleşmeye ekle; test kanıtlarının imha tarihini belirle; ve bulguları sürüm döngüsüne bağla.

Bu on maddenin ortak noktası şu: mobil testin kalitesi, aracın ne kadar iyi olduğunda değil, kapsamın ne kadar dürüst yazıldığında. Kapsamı dar yazılmış bir test, bulgu üretmese bile güven vermiyor; kapsamı açık yazılmış bir test, ürettiği her bulguyla düzeltilebilir bir yol haritası bırakıyor.

Uygulamanızın sunucu tarafı ayrı bir başlık: yetkilendirme modeli, hız sınırları ve belirteç yönetimi mobil testin içinde yalnızca yüzeysel olarak görülüyor. API tarafının ayrıntılı test çerçevesi API güvenlik testi rehberinde, olay sonrası süreç ise olay müdahale planı yazısında. Kasa ve parola tarafındaki tamamlayıcı kontrol listesi de parola yöneticisi risk modelinde.

Sphnix izleme paneli

Mesajları, konumu, sosyal medya ve etkinlik sinyallerini yetkili bir panelden takip edin.

Sphnix’i dene →

Profesyonel yardıma mı ihtiyacınız var?

Yetkili kurtarma, güvenlik testi ve olay desteği için doğrulanmış etik hackerlarla çalışın.

Hacker kirala →

Sorularınız mı var? Uzmanlarımız yardıma hazır.

Ücretsiz danışma için bize ulaşın →

Sık sorulan sorular

Kapsama bağlı. Tek platform, API kapsamı olmayan bir test yaklaşık altı iş günü; iki platform artı kırk uç noktalı API kapsamı, üç rol, dayanıklılık profili ve bir yeniden test turu olan bir test yaklaşık on dört buçuk iş günü. Süreyi belirleyen şey uygulamanın ekran sayısı değil, platform sayısı, API yüzeyi ve rol sayısı.

Tüm uygulamalar için MAS-L1 temel seviye. Cihazın ele geçirilmiş varsayıldığı savunma derinliği için MAS-L2; sağlık, finans veya kimlik verisi taşıyan uygulamalarda beklenen seviye. Tersine mühendislik ve kurcalamaya karşı dayanıklılık için MAS-R ayrı bir kalem. Kapsamda profili ve kapsam dışı bırakılan kontrolleri birlikte yazmak gerekiyor.

Evet, iki yoldan: sabitlemesi kapalı bir test derlemesiyle ya da dinamik enstrümantasyonla sabitlemeyi atlatarak. İkincisi daha gerçekçi ama cihaza kod enjekte ettiği için sözleşmede açıkça izin verilmesi gerekir. Sabitlemenin atlatılabilmesi tek başına zafiyet sayılmaz; asıl bulgu, atlatma sonrası trafikte açık metin belirteç görünmesi veya sunucunun hiçbir tespit sinyali üretmemesidir.

Hayır, güvenlik sınırı değil. Kök tespiti, jailbreak kontrolü, karartma ve bütünlük kontrolü saldırganın maliyetini artırır ve otomatik araçları yavaşlatır, ama yetki kararı sunucuda verilmiyorsa atlanmaları hâlinde uygulama açık kalır. Yetkilendirme ve iş mantığı kontrollerinin uygulanması uzak uç noktada olmalı.

Yeterli değil. Tarama araçları bilinen desenleri arar ve isteği sizin oturumunuzla gönderdiği için başka bir kullanıcının verisinin dönmesini başarılı yanıt olarak işaretler. Nesne düzeyinde yetki hataları, iş mantığı akışları ve derin bağlantı zincirleri manuel test gerektirir. Otomasyon tekrarlayan kontrolleri hızlandırır, manuel testin yerini almaz.

Olmamalı. Test ortamı gerçek verinin kopyasıysa test sırasında o veriye erişmek işleme fiilidir ve 6698 sayılı Kanun'un 12. maddesi kapsamına girer. Doğru uygulama anonimleştirilmiş veri, ayrı test hesapları ve kanıt dosyalarında maskeleme. İstek-yanıt kayıtları ve ekran görüntüleri çoğu zaman bulgudan daha fazla kişisel veri taşıyor.

Her bulgu için yeniden üretilebilir kanıt (sürüm, cihaz, adımlar, istek-yanıt), MASVS kategorisi, önem derecesi ve uygulanabilir düzeltme önerisi. Bulgu sayısı kalite göstergesi değil; on tane düşük etkili bulgu yerine iki tane zincirlenmiş ciddi bulgu daha değerli. Yeniden test turunun kapsamı da raporda yazılı olmalı.

İkisi birlikte. Tekrarlayan kontrolleri (statik analiz, bağımlılık taraması, yapılandırma denetimi) iç ekip otomatikleştirir; büyük sürümlerde veya yılda bir bağımsız ekip manuel test yapar. Kodu yazan ekibin aynı kodu test etmesi bilinen kör noktaları tekrar eder, tamamen dışa vermek ise sürekliliği kaybettirir.

Bu makaleyi paylaş

Bu yazının önbelleğe alınmış bir sürümünü görüntülüyorsunuz. Güncellemeler kısa süre içinde görünebilir.