← WatchMemory
Sürüm notları
0.3.0 · 2026-11
Uygulamanızın unuttuğunu kanıtlayın: sır bazlı sonuçlar, dürüst kararlar, Android (beta).
Güvenlik bülteni WM-2026-10-001
CLI: watchmemory-cli-0.3.0.tar.gz · SHA-256
sha256: 5b324918d7a1b0947fe65c071a24331b207b3f51fa609cedfc417fd6cadadd13
Kalıntı kontrolü
- Sonuçlar string bazında değil, sır bazında: bellekte ve diskte duran aynı token tek bir grup olur; kaldığı her yeri, onu tutan depo ve anahtarı ve neden kapıyı kırdığını (veya kırmadığını) gösterir. Başlık: “3 sır logout sonrası 7 yerde kaldı”.
- Üç karar: PASS (çıkış 0), FAIL (çıkış 1) ve bir kayıt yazılabilir belleğin minimum kapsamından (varsayılan %90) azını okuduğunda, bir kaynak hata verdiğinde, bir dosya veya klasör okunamadığında, bir sınıra ulaşıldığında ya da önceki kayıt hiç sır bulmadığında INCOMPLETE (çıkış 2). Yarım tarama asla PASS değildir.
- plist, SQLite (-wal dosyası dahil), JSON (AsyncStorage, redux-persist), XML preferences, MMKV ve DataStore'dan anahtar bilgisiyle çıkarım. Bulgular depo ve anahtarı adlandırır, örn. SDK:redux-persist › persist:root › auth › refreshToken (AsyncStorage'daki redux-persist).
- Diskte bilinen değer takibi: residue capture --track-from before.json, logout öncesi görülen sırları logout sonrası depolama ve dosyalarda değerleriyle yeniden arar; hiçbir kalıba uymayan opak token'lar dahil (yazıldığı gibi; base64'e sarılmış, sıkıştırılmış veya başka biçimde kodlanmış kopyalar izlenmez). Kayıtlar değer değil, anahtarlı hash saklar.
- Refresh, access, ID, session ve auth token'lar High; canary'ler Critical.
- Bellekteki kalıntılar yalnızca sonucun güvenilir olduğu yerde kapıyı kırar: MallocScribble açık native runtime'lar. React Native (Hermes) ve Flutter (Dart) heap'lerindeki yalnızca-bellek isabetleri gerekçesiyle birlikte rapor edilir, kapıyı kırmaz.
- Her kayıt ve rapor runtime'ı (native, React Native, Flutter, KMP), build türünü (debug) ve bunu tespit etmek için kullanılan kanıtı yazar.
- Yeni kayıt ve karşılaştırma biçimleri (wm-residue-capture/2, wm-residue-compare/2). 0.2.x kaydını 0.3.0 kaydıyla karşılaştırmak reddedilir: ikisini de yeniden kaydedin.
- Kayıtlar cihazı da tutar (Simulator UDID'si veya adb seri numarası): iki farklı cihazdan ya da iki farklı uygulamadan alınan önce/sonra çifti reddedilir. Her şeyini şifreli saklayan bir uygulama boş bir önceki kaydı residue compare --allow-empty-before ile kabul edebilir.
- Büyük veritabanları: anahtar bilgisiyle çözümün dosya başına, çözülmüş değer sayısıyla ölçülen bir bütçesi var (--max-structured-values, varsayılan 20 milyon); sonuç her makinede aynıdır. Bütçeyi aşan dosya yine bayt bayt taranır; --track-from yoksa kontrol INCOMPLETE olur (bütçeden sonraki opak bir token kaçabilir), varsa not düşülür.
- Dosya ve klasör adlarındaki sırlar, değerler gibi her raporda maskelenir.
OWASP MAS v2
- Her kalıntı MASWE-0024'e (oturum sonlandıktan sonra erişilebilen hassas veri, MASVS-AUTH-3) eşlenir.
- Diskteki sırlar MASVS-STORAGE-1, MASWE-0001/0002, MASTG-TEST-0302 (iOS) ve MASTG-TEST-0207 (Android); bellek bulguları MASVS-STORAGE-2 ile eşlenir.
- Kullanımdan kaldırılmış MASTG-TEST-0060 ve MASTG-TEST-0052 atıfları kaldırıldı.
- Düzeltildi: T.C. Kimlik No KVKK kapsamında kişisel veridir, özel nitelikli kişisel veri değildir.
Android (beta)
- disk-scan, ci, assert ve residue capture için --android-package com.acme.app (ayrıca --adb-serial ve --android-user).
- Debuggable bir uygulamanın özel verisini adb run-as ile okur: root gerekmez, CLI Linux veya macOS'ta çalışır. Yalnızca disk: henüz bellek veya Java heap sonucu yok.
- SharedPreferences, DataStore, Room/SQLite, WebView, OkHttp önbelleği, MMKV ve uygulama dosyaları için depo etiketleri.
CLI, CI ve lisans
- Sürümlü CLI tarball'ı (watchmemory-cli-0.3.0.tar.gz) ve yayımlanmış SHA-256 değeri. CI'da ikisini de sabitleyin.
- CI runner'larında (CI, GITHUB_ACTIONS, GITLAB_CI, TF_BUILD, JENKINS_URL, BUILDKITE, BITRISE_IO, CIRCLECI, TEAMCITY_VERSION, CODEBUILD_BUILD_ID ve diğer yaygın CI değişkenleri) --show-values, --allow-show-values-in-ci verilmedikçe reddedilir.
- Free yalnızca rapor üretir (FAIL çıkış 0) ama karar doğru yazılır; yarım tarama her planda çıkış 2'dir. Pro bir uygulama için zorlar; Team bir uygulamanın tüm geliştiricilerini ve runner'larını kapsar.
- Mac uygulaması, Free: her kontrolde kalan ilk 5 sır tam detayla açılır.
Site ve dokümanlar
- Yeni konumlandırma: “Prove your app forgets”. Ürünün karşılayamadığı iddialar kaldırıldı.
- security.txt, zafiyet bildirim politikası ve kamuya açık WM-2026-10-001 bülteni.
- Yeni rehberler: Android (beta) ve React Native / Flutter.
0.2.1 · 2026-10
WM-2026-10-001 bültenindeki sorunlar için acil düzeltme.
Güvenlik bülteni WM-2026-10-001
Düzeltildi
- Lisans doğrulaması: release build'ler WatchMemory mağaza ve ürün kimliklerini içerir, eksiklerse kapalı kalır. Başka Lemon Squeezy mağazalarından kalan önbellekteki doğrulamalar çevrimdışı tolerans tanınmadan silinir.
- Canary modu: -WMCanaryMode 1 (veya SIMCTL_CHILD_WM_CANARY_MODE=1) ile başlatın ve WatchMemory.canaryIfRequested() çağırın; canary'yi uygulama kendisi üretir. Launch argument'lerinde veya ortamında WMCANARY_ geçen süreç reddedilir (çıkış 2), çünkü o değer hiçbir zaman kaybolamaz.
- CI tarifi SIMCTL_CHILD_MallocScribble=1 ve SIMCTL_CHILD_MallocNanoZone=0 ayarlar; serbest bırakılan native bellek kalıntı sayılmaz. CI rehberi, README ve örnekler düzeltildi.
- Refresh, access, ID, session veya auth token anahtarı altında bulunan genel bulgular High sayılır; kalan bir refresh token varsayılan eşikte kapıyı kırar.
- SQLite write-ahead log (-wal) dosyaları okunur; Core Data / SQLite'a son yazılanlar artık kaçmaz.
- Canary artık iki kez sayılmıyor.
0.2.0 · 2026-10
Yeni
- Kalıntı Kontrolü: logout öncesi ve sonrası kaydedin; hangi sırların kaldığını, ortaya çıktığını veya temizlendiğini HTML kanıt raporuyla görün.
- Bellek taramaları tüm yazılabilir belleği belirtilen kapsamla okur (UTF-8 ve UTF-16); Full scan seçeneği.
- Simulator container taraması: UserDefaults, URLCache, SQLite/Core Data hücreleri, plist'ler, Documents, tmp.
- Doğrulanmış dedektörler (kart ağı kontrollü kartlar, IBAN, T.C. Kimlik No, JWT, bulut anahtarları) ve daha az yanlış pozitif.
- CI için CLI: ci, assert, residue, doctor; SARIF, JUnit, Markdown ve HTML raporlar; GitHub Action.
- AI kod ajanları için MCP sunucusu; uygulamada System check ve güncelleme bildirimleri.
- Tarama motoru uygulamanın içinde gelir ve sistemdeki python3 ile çalışır.