From cybersecurity-skills
Audits iOS and Android apps against OWASP MASVS/MASTG — covers insecure storage, weak crypto, certificate pinning, deeplinks, IPC, jailbreak/root detection, and reverse-engineering resistance.
How this skill is triggered — by the user, by Claude, or both
Slash command
/cybersecurity-skills:mobile-auditThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Audit mobile apps against the OWASP Mobile Application Security Verification Standard (MASVS) and Mobile Application Security Testing Guide (MASTG). Covers source code review, static analysis of compiled binaries, and runtime testing.
Audit mobile apps against the OWASP Mobile Application Security Verification Standard (MASVS) and Mobile Application Security Testing Guide (MASTG). Covers source code review, static analysis of compiled binaries, and runtime testing.
Scope: this skill covers the app and its interaction with the device, the backend, and other apps. For backend API security, pair with api-audit. For dependency CVEs (CocoaPods, SPM, Gradle), pair with dependency-audit.
Before reverse-engineering or runtime-testing a binary, confirm:
If unclear, ask before proceeding.
kSecAttrAccessible class — kSecAttrAccessibleWhenUnlockedThisDeviceOnly or kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly. Avoid Always and ThisDeviceOnly-less variantsNSUserDefaults, plist, or app bundle — strings <app>.ipa should not reveal API keys or secretsandroid:allowBackup="false" in the manifest (or backup rules carefully scoped) — otherwise adb backup extracts everythingpasteboard.expirationDate, Android ClipDescription.EXTRA_IS_SENSITIVE)applicationDidEnterBackground blur, Android FLAG_SECURE on the activitystrings, class-dump, apktool reveal embedded constantsSecRandomCopyBytes (iOS) / SecureRandom (Android) — not arc4random() for crypto, never Math.random()iv = "0000000000000000", that's worse than no encryption (reveals plaintext patterns)NSAllowsArbitraryLoads = true. If exceptions exist, they're specific domains, justified, and documentednetwork_security_config.xml exists and enforces cleartext-traffic refusal — <base-config cleartextTrafficPermitted="false">URLSessionDelegate + URLAuthenticationChallenge; Android: NetworkSecurityConfig <pin-set> or OkHttp CertificatePinnerWKWebView only (iOS, not UIWebView); JavaScript bridge audited; setJavaScriptEnabled(false) if the WebView doesn't need JSloadUrl with user-controlled URL — open redirect, intent-spoofing, phishing surfaceLAContext.evaluatePolicy (iOS) / BiometricPrompt (Android) — not the deprecated FingerprintManagerSecAccessControl.biometryAny, Android KeyGenParameterSpec.setUserAuthenticationRequired(true))android:exported="true") reviewed for parameter handlingmyapp://) which any app can registermyapp:// from a WebView to trigger an in-app action without user consent is an XSS-to-action chainandroid:exported="false" unless explicitly intended for cross-app access; if exported, every URI path validatedandroid:permission is callable by any appLocalBroadcastManager for in-app broadcasts; system broadcasts validatedUIApplication.openURL options include UIApplicationOpenURLOptionsSourceApplicationKey)otool -hv on iOS, readelf -h on Android .so)strip, ProGuard/R8)DEBUG flag, isDebuggable in manifest)This category is rated optional in MASVS — only required for high-risk apps (banking, DRM, government). For most apps, don't waste effort here; ship secure crypto and a proper backend.
If required:
ptrace self-attach (iOS / Linux), Debug.isDebuggerConnected (Android)Note: every resilience control will be bypassed by a determined attacker with physical device access. They buy time, they don't prevent.
| Tool | Platform | Use |
|---|---|---|
| MobSF | iOS + Android | Automated static + dynamic scanner; first-pass triage |
| nuclei + mobile templates | Both | Pattern-based scanner |
| semgrep + mobile rules | Both | AST-based rules |
| jadx | Android | Decompile APK to Java |
| apktool | Android | Disassemble APK |
| Hopper / Ghidra / IDA | iOS | Disassemble Mach-O |
| class-dump / nm / otool | iOS | Symbol and structure inspection |
strings | Both | First check — secrets, URLs, debug strings |
| Frida + objection | Both | Runtime instrumentation, SSL-pinning bypass, method tracing |
For grey/black-box assessment, use a non-personal device:
objection if you need to see encrypted traffic during testingapi-audit)# Mobile Application Security Audit
## App: [name + version]
## Platform: iOS / Android / both
## MASVS profile: L1 / L2 / R (resilience required)
## Date: [date]
### Executive summary
[2-3 paragraphs]
### MASVS category findings
| Category | Findings | Severity high-water mark |
|---|---|---|
| STORAGE | N | |
| CRYPTO | N | |
| NETWORK | N | |
| AUTH | N | |
| PLATFORM | N | |
| CODE | N | |
| RESILIENCE | N | (only if R-profile) |
### Per-finding detail
[Title, MASVS-ID, severity, description, location, evidence, remediation, verification]
### Backend API findings
[Cross-link to api-audit / owasp-audit output]
### Recommendations
[Prioritized 30/60/90 day fixes]
npx claudepluginhub briiirussell/cybersecurity-skills --plugin cybersecurity-skillsConducts OWASP MASTG penetration testing on iOS and Android mobile apps via static binary analysis, dynamic runtime testing with Frida/Objection, and API proxying with Burp Suite.
Conducts penetration testing of iOS and Android mobile apps following OWASP MASTG. Performs static binary analysis, runtime dynamic analysis, and API security testing to identify data storage, network, auth, and cryptography vulnerabilities.
Conducts penetration testing of iOS and Android mobile apps per OWASP MASTG. Performs static analysis, dynamic analysis, and API security testing to identify vulnerabilities.