ai-ml-attacks
This skill should be used when the user asks about "AI security", "ML pipeline attacks", "prompt injection", "model deserialization", "unsafe model loading",…
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
$ npx -y skills add allsmog/vuln-scout --skill mobile-android --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/mobile-androidContext preview
The summary Claude sees to decide when to auto-load this skill.
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
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.
Repo: allsmog/vuln-scout
This skill should be used when the user asks about "AI security", "ML pipeline attacks", "prompt injection", "model deserialization", "unsafe model loading",…
This skill should be used when the user asks about "business logic", "workflow vulnerability", "trust boundary", "state machine", "authorization bypass",…
This skill should be used when the user asks about "cache poisoning", "web cache deception", "CDN cache", "proxy cache", "nginx cache", "varnish", "cache key…
This skill should be used when the user asks about "cloud security", "AWS security", "GCP security", "Azure security", "Kubernetes security", "IMDS", "instance…
This skill should be used when the user asks about "compliance mapping", "PCI-DSS", "HIPAA", "SOC 2", "NIST CSF", "regulatory requirements", "compliance…
This skill should be used when the user asks about "Code Property Graph", "CPG analysis", "Joern queries", "CPGQL", "data flow verification", "taint tracking…