Home / Blog / Pentest
Pentest

Mobile app penetration testing: what is checked on iOS and Android?

What a mobile app pentest checks: data on the phone, the API, login and sessions, payments, secrets in code, the backend. Based on OWASP MASVS and MASTG.

ShareLinkedInTelegram
App: Mobile app penetration testing. Data on the phone; API; Login; Sessions
Article contents
  1. In short
  2. What is checked: table
  3. Data on the phone
  4. Connection to the server and the API
  5. Login, sessions and access rights
  6. Payments and in-app purchases
  7. Secrets in the code and protection against reverse engineering
  8. The app's server (backend)
  9. iOS and Android: what is different
  10. What the client provides
  11. What you get as a result
  12. Checklist before a mobile app pentest
  13. FAQ
  14. References

A mobile app penetration test checks six things: what data the app leaves on the phone, how it talks to the server and its API, how login and sessions work, whether payment can be bypassed, whether passwords and keys are built into the code and whether the app's own server is protected. For iOS and Android the basis is OWASP MASVS (a list of security requirements for mobile apps) and the OWASP MASTG guide (how exactly to test them), while the server and API are tested with the OWASP method for web applications. [1] [4]

Mobile app penetration testing means a manual check of the app and its server in which a specialist acts like an attacker: takes the build apart, intercepts the traffic and tries to reach other people's data, money or features. Below is a table with example risks, an explanation of each part, what to give the tester and what you get back. The general format of the work is described on the penetration testing page.

In short

  • As of October 2026 the current versions are OWASP MASVS v2.1.0 (January 2024) and MASTG v2.0.0 (June 2026). Ask the provider which versions they work with. [2] [3]
  • MASVS splits the check into eight groups: data storage, cryptography, login and access rights, network, interaction with the phone, code quality, resistance to reverse engineering and privacy. [1]
  • MASVS itself does not cover the server. The most serious problems often live in the API, so include it in the scope. [4]
  • From the client you need builds for iOS and Android, test accounts for every role, an API description and a developer contact.
  • The result: a report with reproduced findings, business impact and the order of fixes, and a retest after the fixes if it was agreed.

What is checked: table

What is checkedExample riskWhy it matters to the business
Data on the phoneThe login token and card number sit in a file without encryptionA lost or infected phone must not become a leak of customer data
Connection to the serverThe app trusts any certificate, so traffic on public Wi-Fi can be tampered withNobody in the middle reads or changes customer requests
Server APIChanging a number in a request shows another user's profileOne customer cannot see another's data, and a leak does not make the news
Login and sessionsAn old token still works after logout, the SMS code can be guessedAccounts cannot be taken over, a stolen session expires quickly
Payments and purchasesThe app decides on its own that a purchase succeeded, the server does not checkPaid access is not handed out for free, no losses to fraud
Secrets in the codeThe build contains a key to cloud storage or a payment serviceA key cannot be pulled out of the app store and used against you
Interaction with the phoneAnother app opens an internal screen through a linkOther apps on the phone do not get extra access
Resistance to reverse engineeringA limit or access check is easy to switch off in a modified buildImportant rules are enforced by the server, not the user's phone

Data on the phone

The tester installs the app, goes through the main scenarios and looks at what is left on the device: files, the local database, logs, cache, backups, screenshots in the app switcher. A typical finding: the session token (a digital pass issued after login) or personal data stored in plain form, although iOS and Android both have protected stores for keys, Keychain and Keystore.

The tester also checks what ends up in logs and in phone backups. MASVS puts data storage into its own group of requirements. [1]

Connection to the server and the API

An API is the way the app talks to the server: each button in the app usually becomes a request. The tester intercepts these requests and checks two things. First, whether the connection is encrypted and whether the app checks the server's certificate, so nobody in the middle can swap the response. Second, whether the server checks every request instead of trusting the app.

The most common serious problem looks simple: a request contains an order or profile number, and if you change it, the server returns someone else's data. The mobile interface never shows this, but an attacker works with the requests directly, without the app. More on API testing in how website and API security is tested.

Login, sessions and access rights

Here the tester follows the whole user journey: sign up, login, password reset, fingerprint or face login, logout. Typical questions: can the SMS code be guessed, does the session end after logout and after a password change, can biometric login be bypassed just by changing the app's response.

MASVS states plainly that access decisions must be made by the server, and the app only has to use the login protocols correctly. Sensitive actions, such as a money transfer or a phone number change, need extra confirmation. [8] Roles are checked separately: can a regular user call a manager or admin function.

Payments and in-app purchases

If the app has payments, subscriptions or bonuses, the tester looks for a way to get paid features without paying: change the amount in a request, repeat a bonus request, fake a "paid" response. For Android, Google directly advises moving sensitive logic to your own server and verifying every purchase there before granting access. [6]

The payment provider and the app stores belong to other companies. They are not tested, only your integration with them.

Secrets in the code and protection against reverse engineering

Any build from the App Store or Google Play can be downloaded and taken apart. So the tester looks for built-in passwords, API keys, internal service addresses and test accounts. OWASP describes secrets hardcoded in the app package as a separate weakness. [5] The rule is simple: everything inside the app will sooner or later be seen by an outsider.

Resistance to reverse engineering (protection against changing and copying the app) is not needed by everyone. For banking apps, games with paid items or apps with valuable content it is checked more deeply: does the app run on a phone with the system protection broken (rooted or jailbroken), does it notice changes to its own code. But this protection only makes an attack harder, and important rules still have to be enforced by the server.

The app's server (backend)

The backend means the servers and databases the app works with. MASVS and MASTG do not cover it and advise testing it separately against OWASP standards for web applications, including the WSTG guide. [4] [7] In practice a mobile pentest without the API gives an incomplete picture: the app can be built carefully while the server hands out other people's data to anyone who knows the request address.

So the scope should say it directly: iOS app, Android app, API, admin panel if there is one. If something stays out of scope, the report should show it.

iOS and Android: what is different

The MASVS requirements are the same for both platforms, while the test methods in MASTG are written separately for each. [3] What differs is the protected storage, the permission rules, the way other apps can open your screens and the analysis tools. That is why the two versions of one app are tested separately: a bug often exists on only one platform, because different people write them.

What the client provides

MASVS recommends an "open book" format: the tester has access to the developers, documentation, source code and at least one account for each role. [4] The minimum worth preparing:

  • builds for iOS (through TestFlight or a file for a test device) and Android (an APK or AAB file), ideally without extra anti reverse engineering protection for the main part of the test;
  • two test accounts per role, to check whether one user can reach another user's data;
  • an API description or a collection of requests, and the address of the test server;
  • test cards or the payment provider's sandbox, if there are payments;
  • a developer contact for quick questions and written permission with the scope.

The full list of steps is in how to prepare for a pentest.

What you get as a result

  • A short summary for management: what was found, what it means for the business, what to fix first.
  • Findings with steps to reproduce, evidence and a risk rating, separately for iOS, Android and the API.
  • Specific recommendations for developers, not general advice.
  • A list of what was tested and what stayed out of scope.
  • A retest after the fixes, if it is agreed in the contract, with written confirmation of what is closed.

The timeline depends on the number of platforms, roles and features, so it is fixed before the start. If the scope is not clear yet, start with a description of the app and a penetration test of the most important scenarios: login, customer data and payments.

Checklist before a mobile app pentest

Download the preparation checklist (PDF)PDF · A4

FAQ

What is checked in a mobile app penetration test?

The data the app stores on the phone, the connection to the server and the API, login and sessions, payments, secrets built into the code, interaction with other apps and, if needed, resistance to reverse engineering. The basis is OWASP MASVS and MASTG, and the server is tested with the OWASP method for web applications.

Do iOS and Android need to be tested separately?

Yes. The requirements are the same, but the platforms store data and give access to other apps differently, and the code is often written by different teams. A bug in one version does not mean it exists in the other, and the other way round.

Is the API part of a mobile app pentest?

It should be, but write it down explicitly. MASVS covers only the app itself, while the most serious problems, such as access to other people's data, usually live on the server.

Do we need to share the source code?

Not necessarily, a test can be done with builds only. But with code and documentation the check goes deeper in the same time, and MASVS recommends exactly this open format.

How often should a mobile app be pentested?

Usually once a year and after big changes: new payments, a new login method, a move to another server. Between pentests, automated checks in the app build process help.

References

  1. OWASP MASVS: The Mobile Application Security Verification Standard mas.owasp.org
  2. OWASP MASVS v2.1.0 release (January 2024) github.com
  3. OWASP MASTG v2.0.0 release (June 2026) github.com
  4. OWASP MASVS: Assessment and Certification mas.owasp.org
  5. OWASP MASWE-0004: Sensitive Data Hardcoded in the App Package mas.owasp.org
  6. Android Developers: Play Billing, Fight fraud and abuse developer.android.com
  7. OWASP Web Security Testing Guide wstg.owasp.org
  8. OWASP MASVS-AUTH: Authentication and Authorization mas.owasp.org
ShareLinkedInTelegram
Blog

More articles

What is a penetration test, in plain words?

What a penetration test is: definition, why companies do it, how it differs from a scan and a red team, stages, types, report, timing, written permission.

Veiltrack: facts for vetting a pentest vendor

Who we are, who tests, which standards, how we store data, what is in the report, prices and payment, what we do not do. Short answers for due diligence.