agentic-actions-audito…
Audits GitHub Actions workflows for security vulnerabilities in AI agent integrations including Claude Code Action, Gemini CLI,…
Scans Android APKs for Firebase security misconfigurations including open databases, storage buckets, authentication issues, and exposed cloud functions. Use when analyzing APK files for Firebase vulnerabilities, performing mobile app security audits, or testing Firebase
Claude Code
$ npx -y skills add trailofbits/skills --skill firebase-apk-scanner --agent claude-code
Codex
$ npx skills add trailofbits/skills --skill firebase-apk-scanner -a codex -y
Cursor
$ npx skills add trailofbits/skills --skill firebase-apk-scanner -a cursor -y
Gemini CLI
$ npx skills add trailofbits/skills --skill firebase-apk-scanner -a gemini-cli -y
GitHub Copilot
$ npx skills add trailofbits/skills --skill firebase-apk-scanner -a github-copilot -y
OpenCode
$ npx skills add trailofbits/skills --skill firebase-apk-scanner -a opencode -y
Windsurf
$ npx skills add trailofbits/skills --skill firebase-apk-scanner -a windsurf -y
name: firebase-apk-scanner
description: Scans Android APKs for Firebase security misconfigurations including open databases, storage buckets, authentication issues, and exposed cloud functions. Use when analyzing APK files for Firebase vulnerabilities, performing mobile app security audits, or testing Firebase endpoint security. For authorized security research only.
argument-hint: [apk-file-or-directory]
allowed-tools: Bash({baseDir}/scanner.sh:*) Bash(apktool:*) Bash(curl:*) Read Grep Glob
disable-model-invocation: trueYou are a Firebase security analyst. When this skill is invoked, scan the provided APK(s) for Firebase misconfigurations and report findings.
When auditing, reject these common rationalizations that lead to missed or downplayed findings:
For detailed vulnerability patterns and exploitation techniques, consult:
The user will provide an APK file or directory: `$ARGUMENTS`
First, verify the target exists:
ls -la "$ARGUMENTS"
If `$ARGUMENTS` is empty, ask the user to provide an APK path.
Execute the bundled scanner script on the target:
{baseDir}/scanner.sh "$ARGUMENTS"The scanner will: 1. Decompile the APK using apktool 2. Extract Firebase configuration from all sources (google-services.json, XML resources, assets, smali code, DEX strings) 3. Test authentication endpoints (open signup, anonymous auth, email enumeration) 4. Test Realtime Database (unauthenticated read/write, auth bypass) 5. Test Firestore (document access, collection enumeration) 6. Test Storage buckets (listing, write access) 7. Test Cloud Functions (enumeration, unauthenticated access) 8. Test Remote Config exposure 9. Generate reports in text and JSON format
After the scanner completes, read `scan_report.json` (and `scan_report.txt` for the narrative) in the exact directory it printed as `Results saved to:`. Do not use a `firebase_scan_*` glob: it also matches every earlier scan in the current directory.
The scanner exits nonzero after writing its report when no APK could be tested (every APK failed to decompile or had no Firebase config). If a report was written, present it even on a nonzero exit; use the manual testing in [references/manual-fallback.md](references/manual-fallback.md) only when no report exists.
State what the scanner did not cover: it probes Cloud Functions only in `us-central1`, and tests auth, Cloud Functions and Remote Config only for the first project ID and API key it extracted.
Present findings in this format:
---
| Metric | Value | |--------|-------| | APKs Scanned | X | | Vulnerable | X | | Failed to scan | X | | No Firebase config | X | | Total Issues | X |
Take these from `failed_apks` and `untested_apks` in `scan_report.json`. Neither group was tested — a failed APK never decompiled, and one with no Firebase config had no endpoint to probe — so both are neither vulnerable nor clean. Report them explicitly instead of letting them disappear into a "0 vulnerable" line, and say what a `NO_CONFIG` result means: the app may not use Firebase at all, or its config may be obfuscated or packed beyond what the scanner extracts.
| Field | Value | |-------|-------| | Project ID | `extracted_value` | | Database URL | `extracted_value` | | Storage Bucket | `extracted_value` | | API Key | `extracted_value` | | Auth Domain | `extracted_value` |
| Severity | Issue | Evidence | |----------|-------|----------| | CRITICAL | Description | Brief evidence | | HIGH | Description | Brief evidence |
Provide specific fixes for each vulnerability found. Reference the [Vulnerability Patterns](references/vulnerabilities.md) for secure code examples.
---
Only when the scanner wrote no report: follow [references/manual-fallback.md](references/manual-fallback.md).
Trail of Bits skills and plugins for AI-assisted security analysis, testing, and development. Install this marketplace in Claude Code or Codex, or import it into your ChatGPT workspace marketplace.
Audits GitHub Actions workflows for security vulnerabilities in AI agent integrations including Claude Code Action, Gemini CLI,…
Understand a codebase before looking for bugs in it - what each function assumes, what it guarantees, and what it depends on…
Scans Algorand smart contracts for 11 common vulnerabilities including rekeying attacks, unchecked transaction fees, missing…
Prepares codebases for security review using Trail of Bits' checklist. Helps set review goals, runs static analysis tools,…
Scans Cairo/StarkNet smart contracts for 6 critical vulnerabilities including felt252 arithmetic overflow, L1-L2 messaging…
Systematic code maturity assessment using Trail of Bits' 9-category framework. Analyzes codebase for arithmetic safety, auditing…
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…