The Mobile Threat Model
The app ships to the attacker. That one fact changes how you test everything.
What you will learn
- -Explain why the mobile client is untrusted and what that means for testing
- -Map the real attack surface of a mobile app
- -Locate the true security boundary and stop testing the wrong layer
Ship a web app and your code stays on your , where you it. Ship a mobile app and you hand every attacker a copy of the binary to take apart on their own bench, at their own pace, with no rate limit and no watching them. That single fact is the whole reason mobile testing feels different from web testing.
The is untrusted. Fully, permanently untrusted. Anything the app does on the device, an attacker can watch, modify, or rip out. detection, jailbreak detection, pinning, the "you must update" gate, the license check: those are speed bumps, and a tester with Frida drives over all of them in an afternoon. If a control only runs on the phone, treat it as already bypassed and test what is behind it.
So where is the real security boundary? The server . The app is just one of many possible clients hitting that API, and a hostile client is trivial to build. This is the mistake that sinks half of mobile assessments: someone spends a day defeating the app's UI logic when the actual question is whether the backend enforces on the raw request. to the traffic and test the API as if the app did not exist.
What you are actually attacking
The attack surface splits into a few concrete places, and each one is a different kind of test.
- The binary itself. Hardcoded API keys, URLs, weak crypto, business logic you can read straight out of the decompiled code.
- Data at . What the app writes to the device: preferences, SQLite databases, cached files, logs. A lost or stolen phone is the classic here.
- Data in transit. Whether traffic is encrypted, whether the app validates the certificate, whether pinning is present and how it fails.
- Inter-process communication. Android intents and exported components, iOS schemes and universal links, the clipboard, and anything else that lets another app on the device talk to yours.
- Third-party SDKs. Analytics, ads, and crash reporters that leak data or drag in their own vulnerabilities.
Notice what is missing compared to web: there is no quietly protecting you, and the browser is gone. The platform sandbox is what keeps app A out of app B's data, and it holds right up until the device is rooted or jailbroken, at which point every app's private storage is one cd away.
The industry map for all of this is the OWASP MASVS (Mobile Application Security Verification ) and its companion testing guide, the MASTG. When someone asks "what does a real mobile test cover," MASVS is the checklist: storage, crypto, , auth, platform interaction, and anti-tampering. You will see those categories again in the vulnerabilities lesson.
Decompiling and instrumenting an app you did not write is legal on a device you own with an app you are authorized to assess. It is not a blanket license. The app's backend API belongs to someone, and hammering it without written is the same unauthorized-access problem as any web engagement. Practice on your own builds, deliberately vulnerable apps like DIVA, InsecureBankv2, iGoat, and OWASP MAS test apps, or a client named in a signed contract.
An app hides the 'delete account' button unless the logged-in user is an admin. Where should you focus your testing?