The 2025 Mobile App Security Checklist for iOS & Android
Secure the source code
- Code access control with least privilege; protected branches and mandatory reviews.
- Static analysis and secret scanning integrated into CI/CD; block merges on high‑severity findings.
- Developer workstation hygiene and DLP for repositories and build artifacts.
- Dependency and supply chain hygiene (lock versions, monitor).
- Use dedicated secrets management tools (e.g., HashiCorp Vault, AWS Secrets Manager, or GitHub Secrets) instead of storing secrets in
.envfiles or configuration files. - Secure build artifacts in artifact repositories, control who can access, and promote builds to production.
- No hardcoded secrets, no insecure crypto defaults, consistent code review coverage.
Authentication (MFA) and session security
- Multi‑factor authentication, with a preference for app‑based or push‑based factors over SMS where possible.
- Account lockout and step‑up authentication for sensitive actions.
- Session hygiene: short‑lived tokens, secure storage for refresh tokens, and robust logout/rotation flows.
- OTP reuse protections, consistent lockout thresholds, and resistance to brute force and replay.
Encrypt communications end‑to‑end (TLS + certificate pinning)
- Enforce modern TLS; disallow plaintext endpoints and protocol downgrades.
- Implement SSL/TLS certificate pinning to reduce MITM risk on untrusted networks.
- Validate all certificates and fail closed on verification errors.
- No mixed content or fallback to insecure transports; planned pin rotation and an emergency unpin path.
Pentesting and continuous security testing
- Blend automated scanning with expert‑led manual testing for business logic flaws.
- Include mobile-specific attack vectors: side-channel attacks (timing), memory dumps, local privilege escalation, and inter-process communication (IPC) exploits.
- Include tests for app-specific features like deep linking, custom URL schemes, and intent handlers (Android) to identify authorization bypass or data leakage.
- Include brute forcing, fuzzing, and injection testing that reflect real attacker behavior.
- Treat findings as backlog items with fix SLAs; re‑test and capture evidence of closure.
- Test coverage across authentication, session management, storage, API calls, and client‑side protections.
API security governance
- Maintain an inventory of all mobile‑consumed APIs with documentation and owners.
- Enforce strong authentication and authorization; apply the principle of least privilege (PoLP).
- Add mediation (gateway policies), rate limiting, input validation, and consistent logging/monitoring.
- Prevention of broken object‑level authorization (IDOR), injection flaws, and misconfigurations.
Runtime protection (RASP) and tamper resistance
- Detect jailbreak/root, hooking frameworks, debugger attaches, and emulator usage. (Note that runtime checks for jailbreak/root are imperfect; sophisticated attackers can bypass static checks.)
- Respond adaptively: block, degrade functionality, or prompt re‑auth; always log signals.
- Runtime checks cannot be trivially bypassed; responses don’t harm UX under benign conditions.
Secure data storage (Keychain/Keystore)
- Never store secrets in plaintext; use platform keystores for credentials and keys.
- Hash and salt passwords server‑side with modern algorithms; encrypt sensitive records at rest.
- Protect backups and transient storage; implement secure deletion for sensitive data.
- No sensitive data appears in logs, screenshots, caches, or unencrypted backups.
Logging, monitoring, and incident readiness
- Create audit trails for sensitive actions and state changes; centralize telemetry.
- Alert on anomalous behavior and failed security checks; investigate and tune regularly.
- Maintain runbooks and practice incident drills to reduce time to detect/respond.
- Logs avoid sensitive data exposure while preserving enough context to investigate.
Updates, dependencies, and minimum OS policy
- Integrate Software Composition Analysis (SCA) tools into CI/CD to catch vulnerable dependencies at commit time. Use lock files (
Podfile.lock,package-lock.json,gradle.lock) to ensure reproducible builds and prevent transitive dependency surprises. - Ship frequent updates; patch vulnerable SDKs and third‑party dependencies quickly.
- Define and review a minimum OS version policy; sunset insecure OS versions with clear user messaging.
- Provide in‑app nudges for important security updates.
- No use of deprecated APIs that weaken security; dependency risk is monitored and acted on.
Reverse engineering protections
- Apply code obfuscation, symbol stripping, and anti‑tamper checks.
- Detect common dynamic instrumentation attempts and respond appropriately.
- Encrypt sensitive local assets; validate app integrity at startup and during runtime.
- Protections are layered to slow attackers and increase effort without harming performance.
Compliance and audit readines
- Map your checklist to recognized mobile security requirements and sector needs.
- Maintain evidence: policies, test reports, re‑test confirmations, and change logs.
- Consider industry obligations where applicable (privacy and financial sector guidance).
- You can demonstrate control coverage and closure of findings during audits or assessments.
%%{ init: { "theme": "base", "themeVariables": { "background": "transparent", "primaryColor": "#D5E4F2", "textColor": "#000000", "fontSize": "16px", "edgeLabelBackground": "transparent" } } }%%
flowchart TB
%% Vertical timeline: single column
H1[["Weeks 1-2: Baseline & policy"]]
A1["Inventory apps, SDKs, APIs\nDocument data flows & threat paths"]
A2["Publish code, secrets & crypto policies\nEnable SAST & secret scanning (merge blockers)"]
H2[["Weeks 3-6: Core hardening"]]
B1["Enforce TLS & certificate pinning\nDocument rotation & emergency unpin"]
B2["Harden auth & session management\nLockouts & OTP handling"]
B3["Centralize logs & runbooks\nEnable runtime checks: root/jailbreak/hooking"]
H3[["Weeks 7-10: Depth & coverage"]]
C1["API testing: authz, injection, IDOR"]
C2["Harden storage: Keystore/Keychain, encrypted records, backups, secure deletion"]
C3["Fuzzing & negative tests\nStart quarterly expert pentesting cadence"]
H4[["Weeks 11-13: Assurance & scale"]]
D1["Obfuscation & anti-tamper; simulate bypass tactics"]
D2["Re-test closed findings & keep evidence\nReview minimum OS policy; update nudges"]
D3["Publish changelog & 'last updated' marker"]
%% Chain nodes top to bottom to form a timeline
H1 --> A1 --> A2 --> H2 --> B1 --> B2 --> B3 --> H3 --> C1 --> C2 --> C3 --> H4 --> D1 --> D2 --> D3
%% Styles for readability: light blue boxes with black text
classDef box fill:#D5E4F2,stroke:#2b2b2b,stroke-width:1px,rx:6px,color:#000;
classDef headline fill:transparent,stroke-width:0,color:#000,font-weight:bold,font-size:18px;
class A1,A2,B1,B2,B3,C1,C2,C3,D1,D2,D3 box;
class H1,H2,H3,H4 headline;
Common pitfalls to avoid
- Storing tokens or PII in plaintext (logs, caches, backups)
- Trusting client-side validation only; no server-side authz
- Neglecting third-party SDK audits
- Pinning without safe rotation or emergency unpin
- Weak authorization → IDOR / privilege escalation
- Over-reliance on a single runtime check vs layered defenses
- Treating a pentest as done without re-tests & evidence
Quick‑check table
| Area | Requirements |
|---|---|
| Code & CI | Static analysis + secret scanning; protected branches and mandatory reviews |
| Auth & Session | MFA beyond SMS where possible; lockouts; short‑lived tokens and secure storage |
| Transport | Modern TLS enforced; certificate pinning with planned rotation and safe fallback |
| APIs | Inventory; PoLP; rate limiting; authz middleware; consistent logging |
| Testing | Automated scans + expert pentests; fuzzing; re‑tests with evidence |
| Runtime | Root/jailbreak/hooking/debugger detection; adaptive responses |
| Storage | Keystore/Keychain usage; encrypted records; secure deletion; backup protections |
| Observability | Centralized logs; alerts; runbooks; regular drills |
| Updates | Dependency and SDK hygiene; clear minimum OS policy |
| Reverse Eng. | Obfuscation; anti‑tamper; integrity checks; encrypted assets |
| Compliance | Mapped controls, evidence repository, change log, and “last updated” badge |