ai-ml-attacks
This skill should be used when the user asks about "AI security", "ML pipeline attacks", "prompt injection", "model…
Use this skill when the user is auditing a decompiled Android application — directory structure includes `jadx_out/` / `apktool_out/`, files end in `.smali` / are jadx-renamed to `defpackage/*.java`, or the conversation mentions an APK / xAPK / `com.example.*` package. Covers
Claude Code
$ npx -y skills add allsmog/vuln-scout --skill mobile-android --agent claude-code
Codex
$ npx skills add allsmog/vuln-scout --skill mobile-android -a codex -y
Cursor
$ npx skills add allsmog/vuln-scout --skill mobile-android -a cursor -y
Gemini CLI
$ npx skills add allsmog/vuln-scout --skill mobile-android -a gemini-cli -y
GitHub Copilot
$ npx skills add allsmog/vuln-scout --skill mobile-android -a github-copilot -y
OpenCode
$ npx skills add allsmog/vuln-scout --skill mobile-android -a opencode -y
Windsurf
$ npx skills add allsmog/vuln-scout --skill mobile-android -a windsurf -y
name: Mobile Android Whitebox Audit description: Use this skill when the user is auditing a decompiled Android application — directory structure includes `jadx_out/` / `apktool_out/`, files end in `.smali` / are jadx-renamed to `defpackage/*.java`, or the conversation mentions an APK / xAPK / `com.example.*` package. Covers the high-signal vulnerability classes vuln-scout detects in decompiled APKs and the conventions for running the unified mobile-audit workflow. version: 1.0.0
The user is reviewing a decompiled Android target. Signals to look for:
`apktool_out/`, `AndroidManifest.xml`, `*.smali`, or jadx's signature `defpackage/*.java` files (obfuscated default-package classes).
(`com.example.*`, `com.acme.app`, etc.).
`type` starts with `mobile-*`.
For Android targets, the regular `/vuln-scout:scan` only sees one of the two decompilation trees (code OR resources). Use the unified driver instead:
/vuln-scout:mobile-audit <target-root>
The driver auto-discovers `jadx_out/sources` (or `jadx/sources`, `decompiled/sources`, `android-decompiled/sources`, `src/main/java`) for code findings and `apktool_out` (or `apktool`, `res`) for manifest + NSC findings, runs the orchestrator on each, and merges the artifacts into a single `<target>/.claude/findings.json`. Use the `--profile deep` flag when CodeQL / Joern are installed (run `python3 vuln-scout/scripts/doctor.py` to confirm).
VulnScout ships dedicated mobile detectors. Each produces normalized findings with the standard schema (`stable_key`, `kind`, `severity`, `type`, etc.).
| Detector | Type slug | What it finds | |---|---|---| | `detect_webview_js_injection` | `mobile-webview-js-injection` | A `<script>` block or `var X =` JS literal assembled from native StringBuilder/helper calls — the in-WebView card-tokenization shape. Dispatched via `evaluateJavascript` somewhere in the call graph. | | `detect_webview_unsafe_config` | `mobile-webview-file-access`, `mobile-webview-js-interface` | `setJavaScriptEnabled(true)` + `setAllowFileAccess(true)` / `addJavascriptInterface()`. | | `detect_remote_controlled_url` | `mobile-remote-controlled-endpoint` | URL fetched from a config key (`getString("*_URL"...)`) and dispatched via OkHttp/Retrofit/`CoroutineCallFactory` — the remote-config URL-injection shape. | | `detect_network_security_config_gaps` | `mobile-nsc-no-pinning`, `mobile-nsc-narrow-pinning`, `mobile-nsc-cleartext` | Missing or partial cert pinning, cleartext traffic permitted. | | `detect_android_manifest_issues` | `mobile-exported-component-no-permission`, `mobile-debuggable-build` | Exported activity/service/receiver with no permission guard; debuggable production build. | | `detect_android_storage_backup_issues` | `mobile-allow-backup-true`, `mobile-exported-provider`, `mobile-deeplink-host-wildcard` | allowBackup=true; exported ContentProviders without permission; wildcard deeplink hosts. | | `detect_insecure_crypto` | `mobile-insecure-crypto`, `mobile-insecure-random` | AES default mode (ECB) / DES / 3DES / RC4 / MD5 / SHA-1 / HmacMD5; `Math.random()` / `new Random()` used for tokens/IVs/keys. | | `detect_sensitive_sharedprefs` | `mobile-shared-prefs-sensitive` | Tokens / passwords / JWTs / PANs written to non-Encrypted SharedPreferences. | | `detect_log_sensitive_data` | `mobile-log-sensitive` | `Log.X` call interpolating a variable whose name maps to a sensitive identifier. | | `detect_insecure_tls` | `mobile-insecure-tls` | Empty `checkServerTrusted` / always-true `HostnameVerifier`. | | `detect_mobile_intent_redirection` | `mobile-intent-redirection` | Activity re-launches an externally provided Intent (StrandHogg shape). | | `detect_pendingintent_mutable` | `mobile-pendingintent-mutable` | `PendingIntent.get*` with `FLAG_MUTABLE`. | | `detect_hardcoded_secrets_simple` | `secret-hardcoded`, `secret-private-key` | AKIA / sk_live_ / ghp_ / xoxb / `-----BEGIN PRIVATE KEY-----` blocks. |
When `findings.json` is heavy, sort by these priorities first:
1. `mobile-webview-js-injection` + `mobile-remote-controlled-endpoint` in the same package — that's a complete chain (server-influenced data flows into JS that runs in a privileged WebView). 2. `mobile-insecure-tls` + `mobile-nsc-no-pinning` — MITM precondition holds for the entire app. 3. `mobile-shared-prefs-sensitive` in an auth/identity package. 4. `mobile-exported-component-no-permission` on receivers/services that pass intents into payment, auth, or deeplink handlers.
If a code change to detectors needs validation, run against a decompiled target with both `jadx_out/sources/` and `apktool_out/` present. A healthy mobile target with a payment-tokenization flow should produce roughly:
depending on profile and how much obfuscated SDK code lives under `defpackage/`
where a `*_URL` key is read from config and dispatched
native values into a `<script>` literal
`apktool_out/res/xml/network_security_config.xml` whenever pinning is declared but the pin-set is narrower than the app's API surface
`vuln_class_detectors.py` strips findings inside well-known third-party paths to keep noise out of decompiled APKs:
`okhttp3`, `retrofit2`,
AI-powered whitebox penetration testing plugin for Claude Code. 9 languages, 22 skills, 7 autonomous agents. STRIDE threat modeling, OWASP 2025 coverage, polyglot monorepo support.
This skill should be used when the user asks about "AI security", "ML pipeline attacks", "prompt injection", "model…
This skill should be used when the user asks about "business logic", "workflow vulnerability", "trust boundary", "state machine",…
This skill should be used when the user asks about "cache poisoning", "web cache deception", "CDN cache", "proxy cache", "nginx…
This skill should be used when the user asks about "cloud security", "AWS security", "GCP security", "Azure security",…
This skill should be used when the user asks about "compliance mapping", "PCI-DSS", "HIPAA", "SOC 2", "NIST CSF", "regulatory…
This skill should be used when the user asks about "Code Property Graph", "CPG analysis", "Joern queries", "CPGQL", "data flow…
Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication,…
Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys)…
Clean and finalize authorized natural-language text intended for readers by auditing suspicious invisible Unicode and rewriting…