skills/mobile-security-auditor/SKILL.md
Evaluates mobile app security against the OWASP Mobile Top 10. Implements certificate pinning, secure storage, and reverse-engineering protections.
npx skillsauth add fatih-developer/fth-skills mobile-security-auditorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Mobile apps run in hostile, untrusted environments (the user's device). Unlike a web server tucked behind a firewall, a mobile app can be decompiled, memory-dumped, and its network traffic intercepted by anyone holding the physical device. This skill enforces hard security boundaries on the client.
Core principle: Assume the device is compromised. Never trust the client. Never store secrets in plaintext.
1. Analyze the requested feature / current implementation
2. Check against OWASP Mobile Top 10 vulnerabilities
3. Audit Data at Rest (Storage Security)
4. Audit Data in Transit (Network Security)
5. Audit Runtime Defenses (Reverse Engineering/Tampering)
Understand what the app is doing:
Cross-reference the implementation with common flaws:
AsyncStorage or UserDefaults).How is data saved on the device?
SharedPreferences (Android), UserDefaults (iOS), or React Native AsyncStorage.expo-secure-store or react-native-keychain).HTTPS is not enough to stop a Man-in-the-Middle (MitM) attack if the user installs a rogue root certificate on their device (using tools like Charles Proxy).
How do you stop a user from tampering with your app logic?
ptrace checks, Android SafetyNet / Play Integrity API.# 🛡️ Mobile Security Audit Report
**Feature/Area:** [e.g., User Authentication Token Storage]
## 🚨 Critical Security Vulnerabilities
*Must be fixed before release to prevent data breaches.*
1. **[Vulnerability, e.g., Insecure Data Storage (OWASP M2)]**
- **Threat:** [E.g., Storing the JWT in `AsyncStorage` means any rooted device or malicious app with root access can read the token in plaintext from the app's data folder.]
- **Remediation:** [E.g., Migrate storage to the hardware-backed Android Keystore and iOS Keychain utilizing `react-native-keychain`.]
## ⚠️ Medium-Risk Warnings
*Best practices that should be implemented.*
1. **[Risk, e.g., Insecure Communication (MitM Vulnerability)]**
- **Threat:** [E.g., Users on public Wi-Fi could have their traffic intercepted if they are tricked into installing a rogue profile.]
- **Mitigation:** [E.g., Implement strict Certificate Pinning for the `/login` endpoint.]
## 💡 Code Implementation
```javascript/swift/kotlin
// Insecure Pattern (DO NOT DO THIS):
await AsyncStorage.setItem('userToken', token);
// Secure Pattern:
import * as Keychain from 'react-native-keychain';
await Keychain.setGenericPassword('user', token);
---
## When to Skip
- The user is asking about server-side SQL injection or backend Kubernetes security (this skill focuses on the mobile client).
---
## Guardrails
- **Hardcoded Secrets:** Explicitly warn developers against hardcoding API Secrets or third-party paid keys directly into the app source code, even if obfuscated. Strings can always be extracted. Route calls through a secure backend proxy instead.
- **Root Detection Bypass:** Remind developers that client-side Jailbreak/Root detection is an arms race and can be bypassed. It is a defense-in-depth layer, not a silver bullet.
---
## References
See `references/EXAMPLES.md` for a worked case.
tools
Create, optimize, critique, and programmatically structure prompts for AI systems. Use this skill whenever the user is designing or improving a static prompt, system prompt, coding prompt, agent prompt, workflow prompt, MCP-oriented prompt package, or an algorithmic prompt optimization pipeline. Also use it when the user asks to turn vague AI behavior into a precise instruction set, tool policy, agent spec, evaluation metric, or prompt architecture.
testing
Assumption-first architecture review skill to stress-test project plans and expose hidden risks.
testing
Enforce and manage DESIGN.md specifications, extract design systems from URLs, and combine design reasoning with token roles to prevent drift.
testing
Forces the agent to act with a Claude-like product mindset, prioritizing user journey, UX states, and visual quality before coding.