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 reviewing mobile code that handles card data, payment tokenization, or third-party payment SDK integrations (Braintree, Stripe, Adyen, Google Pay, Apple Pay, FirstData-style iframe encryptors). The skill catalogues the high-signal attack patterns vuln-scout
Claude Code
$ npx -y skills add allsmog/vuln-scout --skill mobile-payments --agent claude-code
Codex
$ npx skills add allsmog/vuln-scout --skill mobile-payments -a codex -y
Cursor
$ npx skills add allsmog/vuln-scout --skill mobile-payments -a cursor -y
Gemini CLI
$ npx skills add allsmog/vuln-scout --skill mobile-payments -a gemini-cli -y
GitHub Copilot
$ npx skills add allsmog/vuln-scout --skill mobile-payments -a github-copilot -y
OpenCode
$ npx skills add allsmog/vuln-scout --skill mobile-payments -a opencode -y
Windsurf
$ npx skills add allsmog/vuln-scout --skill mobile-payments -a windsurf -y
name: Mobile Payment Tokenization Patterns description: Use this skill when reviewing mobile code that handles card data, payment tokenization, or third-party payment SDK integrations (Braintree, Stripe, Adyen, Google Pay, Apple Pay, FirstData-style iframe encryptors). The skill catalogues the high-signal attack patterns vuln-scout detects in mobile payment flows — server-controlled tokenization URLs, JavaScript-injection-into-WebView card-data exfiltration, JS-bridge token construction, and payment scope mismatches — and maps each to the detector that fires. version: 1.0.0
The user is reviewing mobile (Android/iOS) code that handles:
style iframe encryptors)
Signals: files under `**/payment/**`, `**/checkout/**`, `**/tokenize*/**`, `**/services/**/api/`, mentions of "PIE key", "iframe shim", "EncryptionListener", "PaymentMethodType".
Most modern card tokenization on Android follows this template:
1. The app fetches an **encryption key** (RSA pubkey or symmetric salt) from a backend. 2. The app fetches the **tokenization endpoint URL** from a backend. 3. The app builds a **JavaScript payload** that contains:
4. The app dispatches the JS into a **WebView** with `setJavaScriptEnabled(true)`. 5. The WebView's encryption JS produces an opaque token, which the bridge returns to native code. 6. The native code submits the token to the processor over HTTPS.
Each step has a corresponding VulnScout detector:
| Step | Detector | What goes wrong | |---|---|---| | 2 (URL fetched) | `mobile-remote-controlled-endpoint` | Backend supplies an attacker-controlled URL; client follows it. | | 1 (key fetched) | `mobile-webview-js-injection` | Key material is spliced into a JS literal unescaped — break out, run JS. | | 3-4 (JS dispatch) | `mobile-webview-js-injection`, `mobile-webview-file-access`, `mobile-webview-js-interface` | WebView config or @JavascriptInterface exposes native callbacks. | | 5 (bridge) | `mobile-js-bridge-payment-token` | Native token object is constructed from JS-controlled values. | | 6 (submit) | `mobile-nsc-narrow-pinning`, `mobile-nsc-no-pinning`, `mobile-insecure-tls` | Cert pinning gap on the processor host allows MITM of the token. |
When the detectors fire on a payment flow you should expect to see a cluster along these lines (file names will differ; the *shape* is what matters):
| Detector type | File shape | Notes | |---|---|---| | `mobile-remote-controlled-endpoint` | a `*TokenizeCardApi` / `*PaymentApi` class | a `*_URL` key is pulled from remote config and dispatched via OkHttp / Retrofit / a custom `CoroutineCallFactory`. | | `mobile-webview-js-injection` | a tokenization helper under `**/payment/**/js/` | PIE/RSA key material + PAN/CVV spliced into a `<script>` literal via StringBuilder. | | `mobile-js-bridge-payment-token` | a sibling `EncryptionListener` / `*Bridge` class | `@JavascriptInterface onEncryptionComplete` builds the native token object. | | `mobile-nsc-narrow-pinning` | `apktool_out/res/xml/network_security_config.xml` | pin-set covers a single advertising/SDK domain while every payment / identity / config host still relies on system CA. | | `mobile-shared-prefs-sensitive` | an auth/identity package | access token / refresh token written to plain SharedPreferences. | | `payment-client-token-scope-mismatch` | a Braintree wrapper | hardcoded `ExternalPaymentProcessor.X` + `PaymentMethodType.Y` may reuse the token outside its intended scope. |
Two detectors in the same payment package + a manifest-side pinning gap = a complete card-data exfiltration primitive. VulnScout's `chain_detector.py` auto-builds this as `Mobile WebView dispatch chain`.
See also: [[mobile-android]], [[mobile-ios]].
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…