Evaluate memory data protection by asking two questions of every sensitive value your app holds while it runs: who could read it, and who could change it. Then check how long each value stays readable, when it is cleared, and whether the app notices tools that inspect or edit its process. Otukan clears sensitive buffers after use, holds idle values encrypted in memory, ties cleanup to sign-out and backgrounding, and detects debuggers and memory-editing tools on Android and iOS, including Flutter and React Native apps. Some plaintext moments are unavoidable. The goal is to make them short, known and watched.
Value-by-value safeguards are covered on mobile app memory protection.
Exposure
A running app handles three kinds of sensitive content in memory. Each carries a different risk.
| Kind | Examples | Read risk | Modification risk |
|---|---|---|---|
| Transient secrets | Session tokens, decrypted keys, one-time codes | Account takeover, forged requests | Low; changing them breaks the flow |
| Decrypted records | Statements, health records, identity documents | Privacy breach from a dump | Low |
| Trusted working values | Limits, balances, scores, feature flags, timers | Low | High: a changed value alters what the app allows |
| Buffers | Network responses, image data, text being assembled | Whatever passed through them | Moderate, if the app reuses the buffer |
Most memory discussions stop at the first two rows. The third is where games, loyalty schemes and offline payment limits lose money, because the attacker does not need to read anything. They change a number the app believes. Controls for that side are on memory editing detection.
Platform differences
On Android, Java and Kotlin objects are managed by the runtime, which can move and copy them, while native code manages its own memory. On iOS, Swift and Objective-C share memory with system frameworks that keep their own copies of data they display. The iOS controls are described on iOS app memory protection. Flutter and React Native run a further runtime with its own object handling. Otukan writes its controls separately for each platform and measures each framework on its own.
Lifetime
Every sensitive value passes through four stages. Mapping them per value turns a vague worry into a plan your team can test.
| Stage | What happens | What Otukan does |
|---|---|---|
| Creation | The value arrives from storage, the network or user input | Holds it sealed where the value is marked |
| Use | The app needs the value readable for an operation or a screen | Keeps the readable window to the operation and watches for debuggers |
| Idle | The value waits for its next use | Keeps it encrypted in memory |
| Cleanup | The session ends, the user signs out or the app goes to the background | Overwrites the buffers that held it |
Unavoidable plaintext boundaries
Some copies sit outside any app’s reach. Text shown in a field is held by the platform’s interface layer. Strings in managed languages may be copied by the runtime before your code can clear them. Data passed to a system service leaves your process. A credible evaluation names these boundaries for your app instead of implying they do not exist. Otukan’s approach is to shorten the copies your code controls and to detect the tools that would read the rest.
Validation
Memory data protection is proven on the running app. Pointing at encrypted storage proves nothing here, because stored data is decrypted before it is used.
Positive test
In an authorised lab, take a process dump between operations and search it for the marked values. Attach a debugger during a decryption flow and confirm the signal and the response. Run a memory editor against a trusted value such as a limit and confirm the edit is detected and reported to your backend.
Negative control
Repeat the same journeys on a clean device with no tools attached. No signals should fire, and flows should complete at their normal pace. This baseline is what lets your team trust the signals when they do fire.
Regression
After each protected release, repeat install, update, sign-in and the sensitive flows, including sign-out cleanup. Record OS versions, devices, tools used, results and the reviewer, so each release carries its own evidence.
Return to code and data protection for the controls that guard your package and your screens.