← ClaudeAtlas

mobile-securitylisted

Android and iOS hardening: exported components, ATS, keychain, certificate pinning, root/jailbreak detection — Applies to: when generating Android (Kotlin / Java) app code or manifests; when generating iOS (Swift / Objective-C) app code; when generating React Native / Flutter native modules
ShieldNet-360/secure-vibe · ★ 3 · AI & Automation · score 76
Install: claude install-skill ShieldNet-360/secure-vibe
<!-- Native skill bundle for agent-skills (cross-tool convention). Generated by `secure-vibe dev regenerate`. --> <!-- Do not edit by hand; the source of truth is skills/mobile-security/SKILL.md. --> # Mobile Application Security Android and iOS hardening: exported components, ATS, keychain, certificate pinning, root/jailbreak detection ## ALWAYS - **Android**: every `<activity>`, `<service>`, `<receiver>`, `<provider>` in `AndroidManifest.xml` either has `android:exported="false"` *or* explicitly declares an intent filter and is intentionally exported. As of Android 12 (API 31), `android:exported` is required when an intent-filter is declared. - **Android**: store secrets in the **Android Keystore** (`KeyStore` / EncryptedSharedPreferences with `MasterKey`). Never in plain `SharedPreferences`, plain files, or `BuildConfig`. - **iOS**: store secrets in the **Keychain** with `kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly` or stricter. Don't store in `UserDefaults`, plist, or files. - **iOS**: keep App Transport Security (ATS) enabled in `Info.plist`. If an exception is required, scope it to a specific host with `NSExceptionDomains`. - Validate the server's TLS certificate with **certificate pinning** (public key pinning preferred) for backends you control. Use `OkHttp.CertificatePinner` on Android, `URLSessionDelegate didReceiveChallenge` on iOS, or your framework's pinning module. - Obfuscate / shrink release builds (Android R8 / ProGuard with `proguard-rules.pro`; iOS