Skip to content
Back to Blog
·9 min read·technology

iOS App Security Testing: A Methodology for Indian Fintech

Authorised iOS app security testing methodology for Indian fintech apps — static analysis, Frida-based dynamic testing, Keychain review, and MASVS mapping.

BR

Bachao.AI Research Team

Cybersecurity Research

Security Built for Fintech

Security exposure this creates

Unpatched vulnerabilities in your tech stack are the #1 entry point for breaches targeting Indian businesses. Here's what to watch.

iOS app security testing for Indian fintech means running structured, authorised assessments across five layers: static analysis of the IPA and its configuration files, dynamic analysis on a jailbroken device or simulator using Frida and objection, Keychain and data-at-rest review, App Transport Security and TLS validation, and mapping every finding to OWASP MASVS/MASTG controls. For an RBI-regulated lending or payments app, this sequence catches insecure local storage, weak certificate pinning, and Keychain misuse before attackers or auditors do. The rest of this guide walks through each stage with the checks a tester actually runs.

Why iOS app security testing needs its own methodology for fintech

Android dominates India's smartphone market, so most public VAPT writing skews Android. But UPI apps, lending platforms, and neobanks all ship iOS builds carrying the same payment flows, KYC documents, and session tokens — often to a wealthier, higher-transaction-value user base. iOS's sandboxing and code-signing model changes where vulnerabilities hide: less "rooted device malware," more "insecure Keychain access control," "hardcoded API keys in the binary," and "TLS trust that silently accepts a proxy certificate."

Indian financial regulators expect this testing to happen. RBI's cyber security framework for banks and the DPDP Act's "reasonable security safeguards" clause both apply to mobile app data handling regardless of platform, and a CERT-In empanelled partner audit is the usual route to a compliant report. This methodology assumes every test described is run only against apps you own, or under a signed authorisation letter — the same authorised-only posture the rest of this piece follows throughout.

Stage 1: Static analysis of the IPA

Static analysis starts before the app ever runs. Pull the .ipa, unzip it, and inspect the bundle contents directly.

Info.plist review — checks:

    1. NSAppTransportSecurity exceptions (NSAllowsArbitraryLoads, per-domain TLS downgrades)
    2. NSFaceIDUsageDescription and other privacy usage strings, checked against actual data collected
    3. URL scheme registrations (CFBundleURLTypes) — a common IDOR-style entry point via deep links
    4. LSApplicationQueriesSchemes for scheme-based data leakage to other installed apps
Entitlements.plist review — checks:
    1. Keychain access groups (keychain-access-groups) — shared groups widen the blast radius if one app in the group is compromised
    2. aps-environment (push notification entitlement) and associated domains for universal links
    3. App Sandbox / data-protection entitlements and whether they're actually the strongest available class
Binary analysis — class-dump or Hopper/Ghidra on the Mach-O binary to recover Objective-C/Swift class names, check for hardcoded secrets (API keys, signing secrets, internal endpoint URLs), and confirm the binary is built with PIE and stack canaries enabled. strings on the binary remains the fastest way to catch an embedded staging credential that should never have shipped.

💡
TIP
Run otool -l against the Mach-O to confirm PIE (MH_PIE flag) and check otool -Iv for weak crypto symbols (MD5, DES) still linked into the binary — a quick static signal of outdated crypto usage before you go deeper.

Stage 2: Dynamic analysis on jailbroken device or simulator

Static analysis tells you what's shipped; dynamic analysis tells you what actually happens at runtime. This is where Frida and objection do the heavy lifting.

A jailbroken physical device (or a corellium/simulator-based equivalent for non-jailbreak testing constraints) lets the tester:

    1. Bypass jailbreak detection and SSL pinning using Frida scripts or objection's ios sslpinning disable / ios jailbreak disable modules, so traffic and runtime behaviour become observable
    2. Hook Objective-C/Swift methods at runtime to trace how authentication tokens, OTPs, and PINs move through memory
    3. Dump the Keychain live with objection's ios keychain dump to see exactly what's persisted post-login
    4. Instrument crypto calls to confirm the app isn't rolling its own weak encryption for session data
    5. Test biometric bypass paths — does Face ID/Touch ID failure ever fall back to a weaker local auth path that can be scripted around?
graph TD A[Static Analysis
IPA Info.plist Entitlements] --> B[Dynamic Analysis
Frida objection jailbroken device] B --> C[Data Storage Checks
Keychain and local files] C --> D[Network Checks
ATS and TLS pinning] D --> E[Report
MASVS mapped findings] style A fill:#1e3a5f,stroke:#3B82F6,color:#e2e8f0 style B fill:#1e3a5f,stroke:#3B82F6,color:#e2e8f0 style C fill:#5f1e1e,stroke:#EF4444,color:#e2e8f0 style D fill:#5f1e1e,stroke:#EF4444,color:#e2e8f0 style E fill:#1e3d2f,stroke:#10B981,color:#e2e8f0
⚠️
WARNING
Never run dynamic instrumentation against a production banking app you don't have written authorisation to test. Attaching Frida to a live fintech app outside a sanctioned engagement is unauthorised access under India's IT Act, regardless of intent.

Know your vulnerabilities before attackers do

Run a free VAPT scan — takes 5 minutes, no signup required.

Book Your Free Scan

Stage 3: Keychain and data-at-rest review

This is the highest-yield section of any iOS fintech assessment, because Keychain and local storage misuse is where real customer harm concentrates.

Checks a tester runs:

AreaWhat to checkCommon finding
Keychain access controlkSecAttrAccessible class used per itemSession tokens stored with AfterFirstUnlock instead of WhenPasswordSetThisDeviceOnly
Core Data / SQLiteLocal DB encryption at restTransaction history stored in a plaintext .sqlite file readable after jailbreak
NSUserDefaults / plistSensitive data outside KeychainPAN, OTP, or auth tokens cached in NSUserDefaults — never encrypted by default
PasteboardClipboard exposure windowOTP or account number copied to a universal clipboard other apps can read
Local logs / crash reportsDebug logging in release buildsAPI responses with KYC data written to on-device logs
Background snapshotsApp switcher screenshotSensitive screens (balance, PAN) visible in the iOS app switcher thumbnail
🛡️
SECURITY
A session token stored in the Keychain with the wrong kSecAttrAccessible class can survive a full device wipe-and-restore-from-backup cycle on an unencrypted iTunes backup — effectively defeating the purpose of Keychain storage. Always verify the specific accessibility class, not just "it's in the Keychain."

Stage 4: Network and ATS/TLS checks

Fintech apps live and die on the integrity of their network layer. This stage validates that App Transport Security isn't quietly weakened and that certificate pinning actually resists interception.

    1. Confirm no NSAllowsArbitraryLoads or blanket ATS exceptions exist for production domains
    2. Attempt MITM via a proxy (Burp/mitmproxy) with a trusted root CA installed — pinning should still block interception even after the CA is trusted at the OS level
    3. Verify pinning is enforced at the certificate or public-key level, not just checking the CN/hostname
    4. Check for TLS downgrade paths, weak cipher suites, and certificate validation bypasses left in for QA/staging builds that shipped to production
    5. Test API endpoints directly for the standard web-layer issues (IDOR, broken object-level authorization, excessive data exposure) since mobile clients often expose more backend surface than the UI shows
22.68 lakhCybersecurity incidents reported to CERT-In in 2024, up from 10.29 lakh in 2022 (CERT-In, via PIB)
400%+Rise in card and internet payment frauds reported by banks, FY23 to FY24 (RBI Annual Report)

Stage 5: Mapping findings to OWASP MASVS/MASTG

Every finding from stages 1–4 should map to a specific OWASP Mobile Application Security Verification Standard (MASVS) control, using the Mobile Application Security Testing Guide (MASTG) as the test-case reference. This is what turns a list of bugs into an audit-defensible report:

    1. MASVS-STORAGE — Keychain misuse, plaintext local storage, pasteboard leakage
    2. MASVS-CRYPTO — weak or custom cryptographic implementations found in the binary
    3. MASVS-AUTH — biometric bypass paths, session token handling
    4. MASVS-NETWORK — ATS exceptions, pinning bypass, TLS downgrade
    5. MASVS-PLATFORM — URL scheme abuse, IPC/deep-link vulnerabilities
    6. MASVS-RESILIENCE — jailbreak detection strength, anti-tampering, anti-Frida controls
Mapping to MASVS gives compliance and audit teams a recognised standard to reference in board reporting, rather than an ad hoc bug list — useful when the same report needs to satisfy an internal risk committee and an external CERT-In empanelled auditor.
pie title iOS App Risk Categories "Insecure Data Storage" : 30 "Weak Network Security" : 25 "Authentication Flaws" : 20 "Reverse Engineering Exposure" : 15 "Platform Interaction Issues" : 10

Defence guidance for developers

Testing only has value if it feeds back into the SDLC. Practical fixes mapped to the stages above:

    1. Store every session token, PIN, and auth artefact in the Keychain with kSecAttrAccessibleWhenPasswordSetThisDeviceOnly or the strictest class the flow allows
    2. Never persist sensitive data in NSUserDefaults, plist files, or unencrypted SQLite/Core Data stores
    3. Enforce certificate or public-key pinning on every production API host, with a documented rotation plan so pinning updates don't require an emergency app release
    4. Strip all debug logging of API payloads, tokens, and KYC fields from release builds via build configuration, not developer discipline alone
    5. Mask sensitive screens (balances, PAN, OTP) in the app switcher snapshot using a blur/cover view on applicationDidEnterBackground
    6. Build jailbreak/tamper detection as one layer of defence, never the only control — assume a determined attacker on a jailbroken device and still require the backend to enforce authorisation
    7. Run static and dynamic checks in CI before every release build, not just at annual audit time
🎯Key Takeaway
iOS fintech security isn't about finding one dramatic exploit — it's about systematically closing five ordinary gaps (static config, runtime behaviour, Keychain/storage, network trust, and MASVS-mapped reporting) that attackers and auditors both know to look for first.
ℹ️
INFO
A single free VAPT scan surfaces the most common web and API-layer issues that also affect your app's backend; pair it with a dedicated iOS static/dynamic assessment run by qualified testers, ideally with a CERT-In empanelled partner for regulated fintech engagements.

Indian fintech teams building or refreshing an iOS app should also revisit how the DPDP Act's data-minimisation and safeguard obligations apply to on-device storage — see the DPDP compliance guidance for the regulatory side of this same data-at-rest question. For more testing methodology writeups across platforms, browse the Bachao.AI blog.

This methodology reflects the authorised-testing practice Dhisattva AI Pvt Ltd applies across mobile and web assessments — every check above assumes signed client authorisation and a defined scope before a single Frida script runs.

External references

Frequently Asked Questions

Do I need a jailbroken device to test an iOS fintech app, or can I use a simulator?
A jailbroken physical device gives the most realistic dynamic-analysis environment because it allows Frida/objection to hook runtime methods, dump the Keychain, and bypass jailbreak detection the way a real attacker's environment would. Simulators and non-jailbroken devices work for parts of the assessment (network checks, some static analysis) but miss on-device storage and tamper-detection behaviour.
What's the difference between OWASP MASVS and MASTG?
MASVS is the standard — a list of security requirements an app should meet, grouped into categories like storage, crypto, authentication, and network. MASTG is the testing guide that shows how to actually verify each MASVS requirement, with concrete test cases and tooling. Testers use MASTG procedures and report against MASVS controls.
Is certificate pinning alone enough to secure a fintech app's network layer?
No. Pinning stops casual MITM interception but can still be bypassed on a jailbroken device using Frida-based unpinning scripts, so it must be paired with strong ATS configuration, backend-side authorization checks, and anomaly detection — pinning is one control in a layered network defence, not a complete solution.
Where should session tokens be stored on iOS — Keychain or local database?
Keychain, always, and with the strictest kSecAttrAccessible class the user flow supports. Local databases (Core Data, SQLite, plist, NSUserDefaults) are not designed for secrets and are readable in plaintext once a device is jailbroken or an unencrypted backup is extracted.
How does this relate to DPDP Act compliance for an Indian fintech app?
The DPDP Act requires "reasonable security safeguards" for personal data, and on-device storage of KYC details, transaction history, or biometric references falls squarely under that obligation. iOS-specific findings like plaintext local storage or Keychain misuse are exactly the kind of gaps a DPDP-focused data protection review would flag.
Can this methodology be automated end to end?
Partially. Static checks (Info.plist, entitlements, binary strings) can be scripted and run in CI on every build. Dynamic analysis, Keychain review, and network pinning tests need a human tester with a jailbroken device to interpret runtime behaviour correctly — full automation risks missing context-dependent findings like weak biometric fallback logic.
BR

Bachao.AI Research Team

Cybersecurity Research

AI-powered security research and threat intelligence from the Bachao.AI team. Covering the latest vulnerabilities, CVEs, and cybersecurity developments affecting Indian businesses.

Get cybersecurity insights for Indian SMBs

Weekly vulnerability alerts, DPDP compliance tips, and security guides. No spam — unsubscribe anytime.

We respect your privacy. Your email is never shared.

RBI and NPCI-aligned security testing for payment platforms

Free automated scan — risk score in under 2 hours. No credit card required.

Security Built for Fintech
Find your vulnerabilitiesStart free scan →