M7: Insufficient Binary Protections
Insufficient binary protections make it easier for attackers to reverse engineer, tamper with, or instrument the mobile app. Once attackers understand app internals they can bypass controls, insert malicious logic, or automate fraud at scale. While binary protections are not a silver bullet, they raise the effort required for large-scale abuse.
Typical Weakness Patterns
- Shipping release builds without code obfuscation, symbol stripping, or anti-debug measures.
- Allowing dynamic code loading from untrusted sources or leaving jailbreak/root detection disabled.
- Not verifying the integrity of the executable at runtime, enabling patching or repackaging attacks.
- Exposing sensitive business logic, credential handling, or encryption keys in plain text within the binary.
Detection Cues
- Static analysis that inspects compiled code for obfuscation levels, debug strings, and exported symbols.
- Runtime testing on rooted/jailbroken devices to gauge whether the app blocks instrumentation or modified binaries.
- Threat monitoring for repackaged app variants circulating in unofficial stores.
Mitigation
- Apply multi-layered hardening: code obfuscation, symbol stripping, control-flow integrity, and anti-tamper checks.
- Guard dynamic code loading features with signature verification and allow-lists.
- Implement root/jailbreak detection and integrity checks, paired with server-side enforcement to prevent risky sessions.
- Separate high-value logic onto trusted backend services to limit exposure within the client binary.