Protected-Data Access via Input-Validation Confusion

← Input Validation (OWASP Mobile M4)

protected_data_access_via_input_validation   HARD

CategoryInput Validation (OWASP Mobile M4)
OWASP Mobile (2024)M4
MASVSMASVS-CODE-4MASVS-AUTH-1
MASWEMASWE-0050
CWECWE-20CWE-863CWE-180
PlatformAndroidiOS

Description

Untrusted app-supplied input flows through a security-sensitive parser/normalizer whose result is then used to authorize access to a protected resource, so an input-sanitization confusion (canonicalization / encoding / type coercion) grants access to protected user data - the flaw is the authorization decision made after insufficiently validated input, not the specific parser (Apple protected-data-via-input-sanitization CVE-2026-43714 class).

How it works

Untrusted input flows through a security-sensitive normalizer whose result authorizes access to a protected resource. The vulnerable path runs a naive deny check on the raw input and only then canonicalizes for lookup, so an encoded, .., or mixed-case variant of a protected identifier slips past the deny rule yet canonicalizes back to the protected id and returns its data. The flaw is the authorization decision on insufficiently-validated input, not the parser itself (Apple CVE-2026-43714 class). The protected records are written to a real on-disk store (the local key-value store, SharedPreferences on Android, UserDefaults on iOS); the vulnerable path then reads the protected record back via the encoded/traversal variant. The secure path canonicalizes first with a strict canonicalizer and checks the canonical form before any read.

How to exercise it. DVMA is the harness - open this module from the home index and tap the demo action. The screen ships the malicious input and simulates the attacker (e.g. the companion app, crafted intent, or scanned payload) in-process, and the evidence panel prints the proof. The Tools (optional) and Attack inputs below are only needed to reproduce the exploit end-to-end on a real device.

Exploit steps

  1. Set up. Build DVMA with a flavor that enables the Input Validation (OWASP Mobile M4) category (e.g. --dart-define-from-file=config/flavors/dev.json) and run on an emulator/simulator you control. The demo needs no external tooling; for the optional on-device reproduction the relevant tools are: frida, frida-trace · Android: jadx · iOS: ipsw, class-dump.
  2. Locate the target. From the home index, open Protected-Data Access via Input-Validation Confusion (protected_data_access_via_input_validation). The How it works section above describes this module’s specific weakness; the screen states the intended-secure behavior and exposes the vulnerable action.
  3. Exploit. Feed the crafted/malformed input (serialized blob, intent extra, media file, deep link) into the parsing path and confirm the app trusts it - state change, crash/DoS, or code path it should reject.
  4. Observe the evidence. Trigger the vulnerable action and read the evidence panel - it prints the concrete proof (leaked value, accepted replay, executed payload, or unauthorized result).
  5. Contrast with the secure path. Run the module’s secure/hardened action (where provided) and confirm the same attack is rejected - this is what a correct implementation should do.

Tools (optional)

Android

iOS

Real-world references

Concrete public disclosures that match this vulnerability class: