Skip to content

Find Firebase security misconfigurations before attackers do ​

FireScan is a free, open-source command-line tool that audits the security of a Firebase project. Point it at your project ID and API key, and it checks what an outsider, or any signed-in user, can actually read, list and reach across Realtime Database, Firestore, Cloud Storage, Cloud Functions, Authentication and Hosting.

bash
go install github.com/JacobDavidAlcock/firescan/cmd/firescan@latest

firescan
firescan > set projectID my-app
firescan > set apiKey AIza...
firescan > auth --create-account
firescan > scan --all

Install FireScan · Run your first scan · View on GitHub

Why Firebase apps leak data ​

Every Firebase web and mobile app ships its project ID and API key to the client. That's by design: the key identifies your project, and it isn't a secret. What protects your data is your Security Rules, and they're easy to get wrong:

  • Test-mode rules left in place after launch
  • allow read, write: if request.auth != null, which lets anyone who signs up read everything
  • Storage buckets that allow public listing
  • Cloud Functions that never check who is calling them
  • Config files like .env or .git/ accidentally deployed to Hosting

Firebase's emulator and Rules Playground test the rules you think you deployed. FireScan tests the project that's actually live, from the outside, the way an attacker would.

What FireScan checks ​

ServiceWhat it tests
Realtime DatabaseRoot exposure, node enumeration with built-in wordlists, read access
FirestoreCollection discovery, document enumeration, read and list permissions
Cloud StorageBucket listing, file enumeration, public object access
Cloud FunctionsFunction discovery across 7 regions, whether functions require authentication
AuthenticationEnabled sign-in providers, whether anyone can create an account
HostingSensitive files such as .env, .git/HEAD and firebase.json
Unauthenticated accessWhat's reachable with no login at all: scan --unauth needs only a project ID

It can also test write access and security rules, Remote Config exposure, App Check enforcement and Cloud Messaging configuration. See scan types for the full list.

Safe to run against production ​

FireScan has three safety modes:

  • Probe (default): read-only. Never creates, changes or deletes data.
  • Test: writes clearly marked test data to isolated firescan-test- paths and tracks it for cleanup. Asks for confirmation first.
  • Audit: deeper testing for staging environments or engagements that explicitly allow it. Also asks for confirmation.

Concurrency (-c) and rate limiting (--rate-limit) let you keep scans gentle on live projects.

Who it's for ​

  • Developers checking their own app before launch, or after changing rules
  • Teams shipping fast, including apps built with AI coding tools, who want a quick check that nothing is wide open. See securing an AI-built Firebase app
  • Security testers and bug bounty hunters working on Firebase-backed targets that are in scope
  • CI/CD pipelines: JSON output makes it easy to fail a build on new findings

Firebase security guides ​

Documentation ​

Need a hand? I also offer Firebase security reviews.

Authorization required ​

Only use FireScan on projects you own or have explicit, written permission to test. Testing systems without permission is illegal in most countries. FireScan is MIT-licensed and provided for authorized security testing only.