Adım 1
Simulator'da veya emülatörde uygulamanıza giriş yapın
UserDefaults ya da AsyncStorage'da bir refresh token, URL önbelleğinde bir JWT, shared_preferences veya DataStore'da bir oturum: logout hataları arayüzde görünmez, sonra pentest raporlarında çıkar. OWASP bu zayıflığı MASWE-0024 (oturum sonlandıktan sonra erişilebilen hassas veri) olarak listeliyor, ama onu otomatikleştiren bir MASTG testi yok.
Önce kaydedin, logout yapın, sonra kaydedin. Her sır, başka bir dosyaya ya da adrese taşınmış olsa bile anahtarlı hash ile eşleştirilir ve tek sonuç olarak raporlanır: kaldığı her yer, onu tutan depo ve anahtar, ve düzeltmesi. Yeterince okuyamamış bir kayıt INCOMPLETE olur, asla sessiz bir PASS değil.
Adım 1
Simulator'da veya emülatörde uygulamanıza giriş yapın
Adım 2
Kaydedin: depolama, önbellekler, dosyalar ve bellek
Adım 3
Kullanıcının yapacağı gibi logout yapın
Adım 4
Yeniden kaydedin: sır bazında PASS, FAIL veya INCOMPLETE
“3 sır logout sonrası 7 yerde kaldı.” Her sır için tek grup (bellekte ve diskte duran aynı token tek sonuçtur); kalan, ortaya çıkan ve temizlenenler anahtarlı hash ile eşleştirilir.
plist, SQLite, JSON, XML preferences, MMKV ve DataStore'dan anahtar bilgisiyle çıkarım tam anahtarı adlandırır, örn. SDK:redux-persist › persist:root › auth › refreshToken. Logout öncesi görülen değerler sonrasında da aranır; hiçbir regex'e uymayan opak token'lar da bulunur (yazıldığı gibi, yeniden kodlanmadan).
PASS, FAIL veya INCOMPLETE. Kapsam %90'ın altındaysa INCOMPLETE. Yalnızca bellekte kalan değerler kapıyı sadece güvenilir olduğu yerde kırar (MallocScribble açık native kod); React Native ve Flutter heap'lerinde rapor edilir, kapıyı kırmaz.
iOS Simulator'da Swift, React Native, Flutter ve KMP debug build'leri. Android'de debuggable build'ler adb run-as üzerinden (root gerekmez), Linux veya macOS'taki CLI ile.
Kalıntılar MASWE-0024'e (MASVS-AUTH-3); diskteki veriler MASVS-STORAGE-1 ve MASTG-TEST-0302 (iOS) veya MASTG-TEST-0207 (Android) ile eşlenir. İncelemeniz için kanıt; sertifika değil.
JWT, Bearer başlıkları, AWS/GitHub/Slack/Google/Stripe anahtarları, özel anahtarlar, Luhn ve kart ağı kontrollü kartlar, IBAN (mod-97), T.C. Kimlik No (checksum), e-posta ve telefon; ayrıca anahtar adından tanınan refresh, access ve session token'lar.
Access token (JWT)
Logout sonrası beklenen: silinmiş
Gerçek: Library/Caches/…/Cache.db (URLCache) içinde ve bellekte hâlâ duruyor
High · kapıyı kırar (disk) · MASWE-0024
Token, logout sonrası URLSession önbelleğinde kaldı. Kimlikli çağrılar için ephemeral session (veya Cache-Control: no-store) kullanın ve logout'ta URLCache'i temizleyin. Bellekteki kopya da raporlanır; tek başına, MallocScribble açık değilse kapıyı kırmaz.
1
Logout öncesi ve sonrası: depolama, önbellekler ve dosyalar; iOS'ta ayrıca bellek. Her kayıt kapsamını yazar.
2
Her sır kayıtlar arasında anahtarlı hash ile eşleştirilir; depo, anahtar ve kapıyı kırma nedeniyle birlikte gruplanır.
3
O depo için önerilen düzeltmeyi uygulayın, sonra kontrol PASS diyene kadar yeniden çalıştırın.
WatchMemory'yi açın ve System check'i çalıştırın (Xcode, Simulator, geliştirici modu)
Simulator'da uygulamanıza giriş yapın ve bir kalıntı kontrolü başlatın
İstendiğinde logout yapın: PASS, FAIL veya INCOMPLETE ve kalan her sır için bir düzeltme alın
Bir kalıntı kontrolü veya CI çalıştırması için tek dosyalık HTML rapor dışa aktarın (PDF olarak yazdırabilirsiniz). Neyin, ne kadarının, hangi platform ve build'de tarandığını yazar; böylece PASS bir anlam taşır.
Aynı kontrolü UI testlerinizden sonra CI'da çalıştırın. Pro veya Team ile bir canary veya yüksek riskli bir sır logout sonrası kalırsa build kırılır. Free aynı doğru kararla yalnızca rapor üretir.
# the app generates its own canary; freed native memory is scribbled
SIMCTL_CHILD_WM_CANARY_MODE=1 SIMCTL_CHILD_MallocScribble=1 \
SIMCTL_CHILD_MallocNanoZone=0 xcrun simctl launch booted com.acme.app
# …log in and out with your UI test, then:
watchmemory ci --process MyApp --bundle-id com.acme.app \
--scan-profile full --baseline .watchmemory-baseline.json \
--sarif wm.sarif --junit wm.xmlCLI 0.3.0'ı indir (.tar.gz, Python 3.9+) · SHA-256 · Doküman
Bir ajan logout düzeltmesini yazabilir ama token'ın gerçekten gidip gitmediğini göremez. WatchMemory'nin MCP sunucusu Claude Code, Cursor ve diğer ajanların çalışan Simulator uygulamasını kontrol etmesini sağlar.
$0
$12 / ay · veya $99 / yıl
$1.500 / uygulama / yıl
Kurucu fiyatı: ilk 20 uygulamaya $990
Kurucu fiyatı: ilk 20 uygulama için yıllık $990; kurum başına ilk uygulama, 24 ay sabit, karşılığında isimli bir referans veya vaka çalışması ve üç ayda bir geri bildirim görüşmesi. Ön satış elle yapılıyor: bize yazın.
$6.000+ / yıl
v1.0 ile geliyor. Bizimle konuşun.
Fiyatlar USD'dir. Pro, Lemon Squeezy (merchant of record) üzerinden satılır; vergiler ödeme sırasında hesaplanır. Team faturalandırılır. Taramalar her zaman yerelde çalışır.
Mobil uygulamalar için yerelde çalışan bir veri kalıntısı test aracı. Uygulamanızın depolamasını, önbelleklerini, dosyalarını ve (iOS'ta) belleğini logout öncesi ve sonrası kaydeder; hangi token ve kişisel verilerin kaldığını PASS, FAIL veya INCOMPLETE kararıyla söyler.
Evet, iOS Simulator'da debug build'lerle (Flutter, Simulator'da yalnızca debug modunda çalışır). Bulgular AsyncStorage, MMKV veya flutter.* preferences gibi depo ve anahtarla etiketlenir; runtime her rapora yazılır. JavaScript (Hermes) veya Dart heap'indeki yalnızca-bellek isabetleri raporlanır ama kapıyı kırmaz, çünkü oradaki serbest bırakılmış string'ler çöp toplayıcıyı bekler. Depolama sonuçları her zamanki gibi kapıyı kırar.
Beta olarak. CLI, debuggable bir build'in özel verisini adb run-as ile (root gerekmeden) Linux veya macOS'ta, CI runner'ları dahil, okur. Yalnızca diski kapsar: SharedPreferences, DataStore, Room/SQLite, WebView verisi, OkHttp önbelleği, MMKV ve dosyalar. Android için henüz bellek sonucu yok.
Hayır, bilinçli olarak. iOS ve Android, debugger'ın veya run-as'in yalnızca debug (debuggable) build'lere erişmesine izin verir. WatchMemory kendi debug build'inizi kontrol eder; release build'ler ne bizim ne de aynı erişime sahip olmayan birinin tarafından incelenebilir.
SDK gerekmez. İsteğe bağlı: WatchMemoryDebugAgent Swift paketi (yalnızca DEBUG build'ler) uygulamanın sıfır yanlış pozitifli kontroller için bir WMCANARY_ canary üretmesini sağlar.
Henüz değil. Keychain öğeleri uygulama container'ının dışında tutulur; logout sonrası Keychain'de kalan bir token bugün raporlanmaz. Logout kodunuzda Keychain öğelerini silin; Keychain yaşam döngüsü kontrolü yol haritasında.
Henüz değil. iOS taramaları Mac'inizdeki Simulator uygulamalarını hedefler. Fiziksel cihaz desteği yol haritasında.
Hiçbir araç yapamaz: OWASP uygulamaları veya araçları sertifikalandırmaz. WatchMemory, OWASP MASWE-0024 kontrolünü otomatikleştirir ve sonuçları MASVS-STORAGE ve MASVS-AUTH-3 ile eşler; böylece bir inceleme veya pentest için kanıtınız olur.
Kontrol çalışır ve doğru kararı yalnızca rapor (report-only) etiketiyle yazar. FAIL olsa da çıkış kodu 0 olur, build kırılmaz. Pro bir uygulama için zorlar; Team bir uygulamanın tüm geliştiricilerini ve runner'larını kapsar.
Mac uygulaması: macOS 14+ ve Xcode (iOS Simulator ve LLDB onunla gelir); tarama motoru uygulamanın içinde. CLI: Python 3.9+, ayrıca iOS için Xcode veya Android için adb (Linux veya macOS).
Hayır. Taramalar yerelde çalışır, değerler tüm raporlarda varsayılan olarak maskelenir ve kuruluma özel bir anahtarla hash'lenir; MCP sunucusu ham değerleri AI modellerine asla göndermez. Tek ağ çağrıları Pro lisans doğrulaması ve günlük güncelleme kontrolüdür (yalnızca sürüm numarası).
Yerelde çalışan bir veri kalıntısı test aracı: logout'un bir mobil uygulamanın depolamasından, önbelleklerinden ve belleğinden token ve kişisel verileri sildiğini PASS / FAIL / INCOMPLETE kararıyla kanıtlar.
Hesap, ödeme veya sağlık verisi içeren uygulama geliştiren mobil ekipler: iOS Simulator'da native iOS, React Native, Flutter ve KMP; debuggable build'ler için Android (beta).
Onlar sızan nesneleri bulur ve belleği ölçer. WatchMemory sır değerlerini arar ve logout sonrası gidip gitmediklerini kontrol eder. Birlikte kullanın.
OWASP MAS v2: MASWE-0024 (oturum sonlandıktan sonra erişilebilen hassas veri), MASVS-STORAGE-1/2 ve MASVS-AUTH-3. MASWE-0024 kontrolünü otomatikleştirir; uyumluluk sertifikası vermez.
iOS, React Native, Flutter ve Android'de logout'ta token ve kişisel verileri temizlemek için pratik rehberler.
Tüm yazıları görBir sonraki build'inizde kalıntı kontrolü çalıştırın. Ücretsiz, yerel, hesap gerektirmez.
Team fiyatı, fatura veya kurucu fiyatıyla pilot mu istiyorsunuz? Bize yazın
WatchMemory Mac uygulaması yerelde çalışır: taramalar ve raporlar cihazınızda kalır. Bu sitedeki web analitikleri gizlilik dostudur ve yalnızca siteyi iyileştirmek için kullanılır.