Firebase security scanner for iOS apps
Project description
🔥🐕 Firehound Firebase Security Scanner
Automated Firebase security scanner for iOS applications
Firehound downloads iOS apps from the App Store, extracts Firebase configurations, and systematically tests for security misconfigurations across Realtime Database, Firestore, Storage, Functions, and Hosting services.
🚀 Quick Start
Installation
# Install from PyPI
pip install firehound-scanner
# Or with pipx (recommended for tools)
pipx install firehound-scanner
Prerequisites
Install ipatool for App Store downloads:
# macOS
brew install majd/repo/ipatool
# Linux - download from releases
# https://github.com/majd/ipatool/releases
Setup & Usage
# 1. One-time setup with Apple ID
ipatool auth login --email your@email.com
# 2. Set environment variables
export FIREHOUND_EMAIL='your@email.com'
export FIREHOUND_KEYCHAIN_PASSPHRASE='your_passphrase'
export FIREHOUND_APPLE_ID_PASSWORD='your_password'
# 3. Start scanning!
firehound --search "banking apps" -l 3 # Search and scan
firehound --bundle-id com.example.app # Scan specific app
firehound --ids-file app-list.txt # Batch scan
firehound --directory /path/to/app # Scan extracted app
🏗️ How It Works
graph LR
A[🔍 App Store Search] --> B[📱 Download iOS App]
B --> C[📋 Extract Firebase Config]
C --> D[🧪 Test Firebase Services]
D --> E[📊 Generate Report]
subgraph "Firebase Services"
F[🔥 Realtime Database]
G[📄 Firestore]
H[📦 Storage Buckets]
I[⚡ Cloud Functions]
J[🌐 Hosting]
end
D --> F
D --> G
D --> H
D --> I
D --> J
✨ Key Features
- 🔍 Automated Discovery: Search App Store or scan specific apps
- 🏗️ Complete Coverage: Tests all major Firebase services
- 🔐 Authentication Testing: Attempts anonymous and email auth
- 📊 Detailed Reports: JSON reports with evidence and proof-of-concept
- ⚡ Fast & Efficient: Concurrent testing with smart retries
- 🧹 Responsible Testing: Cleans up test data automatically
🎯 What It Finds
🚨 Critical Issues
- Public write access to databases or storage
- Exposed security rules configuration
- Admin endpoints accessible without auth
⚠️ Security Issues
- Public read access to sensitive data
- Directory listing enabled on storage
- Unauthenticated API endpoints
Detection Coverage
graph TD
A[Firebase App] --> B{Services Found}
B --> C[🔥 Realtime Database]
B --> D[📄 Firestore]
B --> E[📦 Storage]
B --> F[⚡ Functions]
B --> G[🌐 Hosting]
C --> C1[Read Rules Exposure]
C --> C2[Public Read Access]
C --> C3[Public Write Access]
D --> D1[Collection Access]
D --> D2[Document Creation]
D --> D3[Query Permissions]
E --> E1[Object Listing]
E --> E2[File Upload]
E --> E3[Public Downloads]
F --> F1[Endpoint Discovery]
F --> F2[Unauthenticated Access]
G --> G1[Web App Access]
G --> G2[Config Exposure]
📚 Documentation
- 🌐 Complete Documentation: https://firehound.covertlabs.io
- 🐛 Issues & Support: https://github.com/covertlabsaus/firehound/issues
🤝 Contributing
- Fork the repository
- Create feature branch:
git checkout -b feature/amazing-feature - Commit changes:
git commit -m 'Add amazing feature' - Push to branch:
git push origin feature/amazing-feature - Open a Pull Request
⚖️ Legal & Ethics
- ✅ Test only apps you own or have permission to test
- ✅ Follow responsible disclosure for found vulnerabilities
- ✅ Respect rate limits and terms of service
- ❌ Do not test apps without authorization
📄 License
MIT License - see LICENSE file for details.
Built with ❤️ for the security community
App Store Search Process
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file firehound_scanner-2.0.0.tar.gz.
File metadata
- Download URL: firehound_scanner-2.0.0.tar.gz
- Upload date:
- Size: 25.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f9a1a564161c92146f1273852994cf1b65f7c1018e21de59e8531d06aa40e0f5
|
|
| MD5 |
909226b12d36a319efe380851c76b9b2
|
|
| BLAKE2b-256 |
0d2fd4d0510873f6288d8b045ee5624a89581190ee6b3dce9c314e6749ff212b
|
Provenance
The following attestation bundles were made for firehound_scanner-2.0.0.tar.gz:
Publisher:
pypi-publish.yml on covertlabsaus/firehound
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
firehound_scanner-2.0.0.tar.gz -
Subject digest:
f9a1a564161c92146f1273852994cf1b65f7c1018e21de59e8531d06aa40e0f5 - Sigstore transparency entry: 422868761
- Sigstore integration time:
-
Permalink:
covertlabsaus/firehound@f1b18e5a5436585c088e700919e617676d27454b -
Branch / Tag:
refs/tags/v2.0.0 - Owner: https://github.com/covertlabsaus
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@f1b18e5a5436585c088e700919e617676d27454b -
Trigger Event:
push
-
Statement type:
File details
Details for the file firehound_scanner-2.0.0-py3-none-any.whl.
File metadata
- Download URL: firehound_scanner-2.0.0-py3-none-any.whl
- Upload date:
- Size: 25.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
44bf3b534775aff8f9aded98833e2490813944ccb0b9d13bf36f9c8be469acf3
|
|
| MD5 |
6e58019f74e53415f2592e897def4469
|
|
| BLAKE2b-256 |
f9de88109480a68298367b72307e2f3809a8ad9a177af680fca7ada3ba6389e5
|
Provenance
The following attestation bundles were made for firehound_scanner-2.0.0-py3-none-any.whl:
Publisher:
pypi-publish.yml on covertlabsaus/firehound
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
firehound_scanner-2.0.0-py3-none-any.whl -
Subject digest:
44bf3b534775aff8f9aded98833e2490813944ccb0b9d13bf36f9c8be469acf3 - Sigstore transparency entry: 422868773
- Sigstore integration time:
-
Permalink:
covertlabsaus/firehound@f1b18e5a5436585c088e700919e617676d27454b -
Branch / Tag:
refs/tags/v2.0.0 - Owner: https://github.com/covertlabsaus
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@f1b18e5a5436585c088e700919e617676d27454b -
Trigger Event:
push
-
Statement type: