OWASP MASWE-0024 kontrolünü otomatikleştirir: oturum sonlandıktan sonra erişilebilen hassas veri.

Mobil uygulamalar için veri kalıntısı testi

Uygulamanızın unuttuğunu kanıtlayın: logout sonrası hiçbir token kalmasın.

Uygulamanızı logout öncesi ve sonrası kaydedin. WatchMemory hangi token ve kişisel verilerin kaldığını (depolamada, önbelleklerde, dosyalarda ve bellekte) gösterir, onları tutan depo ve anahtarı adlandırır ve CI'da çalıştırabileceğiniz bir PASS, FAIL veya INCOMPLETE kararı verir.

İndir ve ilk kalıntı kontrolünü çalıştır

Free: günde bir kalıntı kontrolü. Hesap yok, yükleme yok.

WatchMemory'yi indir

iOS Simulator: Swift, React Native, Flutter ve KMP debug build'leri. Android (beta): debuggable build'ler, yalnızca disk, Linux veya macOS'ta CLI. Yerelde çalışır; hiçbir şey yüklenmez.

Kalıntı kontrolü · com.acme.appÖrnek

iOS Simulator · React Native (Hermes) · debug build

Kapsam

0 %

Logout öncesi sırlar

0

Kalan

0

Refresh token · High

disk · SDK:redux-persist › persist:root › auth › refreshToken

KALDI

Access token (JWT) · High

disk · URLCache Cache.db + JS heap

KALDI

Session ID · High

yalnızca bellek · JS heap, GC bekliyor

YALNIZCA RAPOR

E-posta · Medium

disk · SDK:redux-persist › persist:root › user › email

temizlendi

FAIL · 3 sır logout sonrası 4 yerde kaldı (2'si kapıyı kırıyor)

Logout nadiren her şeyi temizler

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.

WatchMemory logout'u bir teste dönüştürür

Ö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.

Nasıl çalışır

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

Tek bir iş için: logout'un temizlediğini kanıtlamak

Sır bazında sonuçlar

“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.

Sadece kalıp değil, depo ve anahtar

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).

Güvenebileceğiniz kararlar

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 ve Android (beta)

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.

OWASP MAS v2 eşlemesi

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.

Doğrulanmış dedektörler

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.

Örnek kalıntı kontrolü

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.

Kayıttan karara

1

Kaydet

Logout öncesi ve sonrası: depolama, önbellekler ve dosyalar; iOS'ta ayrıca bellek. Her kayıt kapsamını yazar.

2

Karşılaştır

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

Düzelt ve yeniden kontrol et

O depo için önerilen düzeltmeyi uygulayın, sonra kontrol PASS diyene kadar yeniden çalıştırın.

İndirdikten sonra neler olur

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 sürüme ekleyebileceğiniz kanıt

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.

  • • Kapsamla birlikte PASS / FAIL / INCOMPLETE
  • • Sır bazında gruplar: kaldığı yer, depo ve anahtar, kapıyı kırma nedeni
  • • OWASP MAS v2 referansları: MASWE-0024, MASVS-STORAGE-1, MASTG-TEST-0302 / 0207
  • • Her raporda platform, runtime ve build türü
  • • Yalnızca maskeli değerler ve anahtarlı hash'ler

Sadece gösterge paneli değil, yayın kapısı

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.

  • • iOS: bellek ve Simulator container'ı (UserDefaults, URLCache, SQLite/Core Data, Documents, tmp). Android (beta): Linux runner'larda adb run-as ile uygulama verisi.
  • • Yanlış alarmsız canary'ler: uygulama -WMCanaryMode 1 ile başlatıldığında canary'yi kendisi üretir; canary içeren launch argument'ler reddedilir.
  • • MallocScribble tarifi: serbest bırakılan native bellek kalıntı sayılmaz.
  • • Çıkış kodları 0 PASS, 1 FAIL, 2 INCOMPLETE veya hata; SARIF, JUnit, Markdown ve HTML raporlar.
  • • Baseline ve .watchmemory.json politikası: yalnızca yeni bulgular build'i kırar (canary'ler her zaman kırar).
  • • SHA-256 checksum'ı yayımlanan sürümlü CLI.
# 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.xml

CLI 0.3.0'ı indir (.tar.gz, Python 3.9+) · SHA-256 · Doküman

AI kod asistanınızla çalışır

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.

  • • check_environment, scan_memory, scan_disk, compare_residue_captures ve assert_no_residue araçları
  • • Ham sır değerleri modele asla gönderilmez: yalnızca maskeli önizleme ve hash
  • • Yerelde stdio üzerinden çalışır; tarama verisi Mac'inizden çıkmaz

Fiyatlandırma

Free

$0

  • • Günde 1 logout kalıntı kontrolü: tam karar ve kalan ilk 5 sır detaylı
  • • Quick scan'ler ve günde 1 Full scan
  • • CLI, Android beta ve CI yalnızca rapor modunda: karar doğru yazılır, build kırılmaz
  • • Günlük kota içinde MCP tarama araçları

Pro

$12 / ay · veya $99 / yıl

  • • 1 geliştirici için: sınırsız kalıntı kontrolü ve tarama, tüm bulgular
  • • Kanıt raporu dışa aktarımı (HTML, yazdırmaya hazır)
  • • 1 uygulama için CI zorlaması: bir sır logout sonrası kalırsa build'i kır
  • • Mac uygulaması, CLI (Android beta dahil) ve MCP sunucusu

Team

$1.500 / uygulama / yıl

Kurucu fiyatı: ilk 20 uygulamaya $990

  • • Uygulama başına: aynı uygulamanın iOS bundle ID'si ve Android paketi 1 uygulama sayılır; ek uygulamalar −%30
  • • Sınırsız geliştirici ve CI runner
  • • Çevrimdışı lisans ve fatura
  • • Ortak baseline ve politika; hesap değiştirme ve hesap silme senaryoları v0.4 ile

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.

Enterprise

$6.000+ / yıl

  • • 5 uygulama dahil, ek uygulama başına +$900
  • • İmzalı kanıt, uyumluluk eşlemesi ve kabul edilmiş risk kaydı
  • • Tedarikçi güvenlik paketi ve air-gapped kullanım

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.

Sık sorulan sorular

WatchMemory nedir?

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.

React Native, Flutter veya Kotlin Multiplatform ile çalışır mı?

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.

Android'i destekliyor mu?

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.

App Store veya release build'leri tarayabilir mi?

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 gerekiyor mu?

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.

Keychain'i inceliyor mu?

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.

Fiziksel iPhone'da çalışır mı?

Henüz değil. iOS taramaları Mac'inizdeki Simulator uygulamalarını hedefler. Fiziksel cihaz desteği yol haritasında.

Uygulamamı uyumlu veya MASVS sertifikalı yapar mı?

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.

Free planda CI'da ne 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.

Neye ihtiyaç var?

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).

Sırlarım cihazımdan çıkar mı?

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ı).

Kısa cevaplar

WatchMemory nedir?

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.

Kimler için?

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).

Xcode Instruments veya LeakCanary'den farkı nedir?

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.

Hangi standarda eşlenir?

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.

Logout ve veri kalıntısı rehberleri

iOS, React Native, Flutter ve Android'de logout'ta token ve kişisel verileri temizlemek için pratik rehberler.

Tüm yazıları gör

Her sürümden önce uygulamanızın unuttuğunu kanıtlayın

Bir 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.