Enterprise-grade cloud storage security scanner with advanced attack chain analysis, MITRE ATT&CK mapping, and comprehensive reporting
CloudVault discovers exposed AWS S3, Google Cloud Storage, and Azure Blob containers through certificate transparency monitoring and provides actionable security insights with tree-formatted visualizations.
- π Real-time Discovery - Certificate transparency log monitoring
- βοΈ Multi-Provider - AWS S3, GCP Storage, Azure Blob
- π― Smart Detection - Automated permission checking
- π Risk Scoring - Advanced multi-factor algorithm (0-100)
- π Attack Chains - Multi-hop privilege escalation paths
- π¨ Tree Visualizations - Beautiful ASCII output everywhere
- π Alerts - Slack, Discord, Email notifications
- π Advanced Filtering - Boolean logic + regex queries
- π Historical Tracking - SQLite database with trend sparklines
- π§ Auto-Remediation - Terraform/AWS CLI script generation
- π Trust Graphs - Relationship visualization
- π Compliance - CIS Benchmarks, PCI-DSS mapping
- π¨ Interactive TUI - Textual framework interface
- π€ Multi-Format Export - SARIF, CSV, JSON, HTML, ASCII Tree
# Clone repository
git clone https://github.com/yourusername/CloudVault.git
cd CloudVault
# Install dependencies
pip install -e .
# Install optional dependencies
pip install aiosqlite websockets # For history & real-time scanning# Create domain list
echo "example.com" > domains.txt
echo "company.com" >> domains.txt
# Scan
cloudvault scan --source domains.txt --output findings.json# Monitor CT logs
cloudvault scan --only-interesting --save-history
# With keywords filter
cloudvault scan --keywords-file keywords.txt
# With alerts
cloudvault scan \
--notify slack \
--slack-webhook https://hooks.slack.com/... \
--alert-on critical,high# Security dashboard
cloudvault dashboard -i findings.json
# With filters
cloudvault dashboard -i findings.json \
--filter "severity=CRITICAL,HIGH" \
--only-public \
--min-risk-score 75
# Attack chain analysis
cloudvault analyze -i findings.json -f tree
# Filter before analysis
cloudvault analyze -i findings.json \
--filter "provider=aws" \
--min-blast-radius 70# SARIF for GitHub Security
cloudvault export -i findings.json -f sarif -o report.sarif
# HTML report
cloudvault export -i findings.json -f html -o report.html
# Tree visualization
cloudvault export -i findings.json -f tree -o report.txt
# CSV for spreadsheets
cloudvault export -i findings.json -f csv -o report.csv# Generate Terraform
cloudvault remediate -i findings.json -f terraform --dry-run
# Generate AWS CLI commands
cloudvault remediate -i findings.json -f awscli# CIS Benchmarks
cloudvault compliance -i findings.json --framework CIS
# PCI-DSS
cloudvault compliance -i findings.json --framework PCI-DSS# View scan history
cloudvault history list --limit 20
# Trend analysis with sparklines
cloudvault history trends --days 30
# Compare scans
cloudvault history compare --from-scan 1 --to-scan 5| Command | Description |
|---|---|
scan |
Discover exposed buckets (CT logs or domain list) |
dashboard |
Security overview with risk scoring |
analyze |
Attack chain and privilege escalation analysis |
export |
Multi-format export (SARIF/CSV/JSON/HTML/Tree) |
remediate |
Generate auto-fix scripts (Terraform/AWS CLI) |
compliance |
Framework mapping (CIS/PCI-DSS/HIPAA) |
history |
Scan history, trends, and comparison |
graph |
Trust relationship visualization |
tui |
Interactive terminal UI |
baseline |
Delta reporting and ignore patterns |
test-alerts |
Test notification channels |
init-config |
Create default configuration |
# Equality
--filter "severity=CRITICAL"
# Multiple values (OR)
--filter "severity=CRITICAL,HIGH"
# Comparison operators
--filter "risk_score>=75"
# Regex
--filter "bucket_name~regex:.*-prod-.*"
# Boolean AND
--filter "severity=CRITICAL AND provider=aws"
# Exclude
--exclude "bucket_name~.*-test-.*"
# Combine filters
--filter "severity=CRITICAL,HIGH" \
--only-public \
--min-risk-score 80# Slack
--notify slack \
--slack-webhook https://hooks.slack.com/... \
--alert-on critical,high
# Discord
--notify discord \
--discord-webhook https://discord.com/api/webhooks/...
# Email (SMTP)
--notify email \
--email-to security@company.com \
--smtp-host smtp.gmail.com \
--smtp-user alerts@company.com \
--smtp-password "..."
# Multiple channels
--notify slack discord email# .github/workflows/cloudvault.yml
- name: Run CloudVault
run: |
cloudvault scan --source domains.txt --output findings.json
cloudvault export -i findings.json -f sarif -o cloudvault.sarif
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: cloudvault.sarifβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CloudVault Dashboard β
β Cloud Security Risk Analysis β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββ Security Risk Score ββββββ
β Risk Score: 64.0/100 β
β Status: HIGH β
ββββββββββββββββββββββββββββββββ
Findings by Severity
CRITICAL: 2 (40.0%) ββββββββ
HIGH: 2 (40.0%) ββββββββ
MEDIUM: 1 (20.0%) ββββ
Top Security Risks:
1. Public S3 Bucket with Sensitive Data
2. Credentials in Bucket Objects
3. Database Dump Exposure
Multi-Hop Privilege Escalation (Blast Radius: 90.0)
βββ Access Public Bucket (T1530)
βββ Extract Credentials (T1552.001)
βββ Authenticate with Stolen Credentials (T1078)
βββ Exfiltrate Sensitive Data (T1537)
π CIS Compliance Report
============================================================
ββ Total Controls: 2
ββ β Passed: 0
ββ β Failed: 4
ββ CIS-2.1.5: Ensure S3 buckets are not publicly accessible
ββ β company-prod-backups
cloudvault_discovery/
βββ cli/ # Click command-line interface
βββ core/ # Scanning engine (certstream, scanner)
βββ models/ # Data models (Finding, AttackChain)
βββ analysis/ # Risk scoring, MITRE mapping, attack chains
βββ dashboard/ #Rich visualization and metrics
βββ export/ # Multi-format exporters
βββ alerts/ # Notification channels
βββ filtering/ # Advanced query parser
βββ history/ # SQLite database & trends
βββ remediation/ # Auto-fix templates
βββ compliance/ # Framework mappers
βββ graph/ # Trust visualization
βββ tui/ # Textual UI
# Run tests
pytest tests/ -v
# With coverage
pytest tests/ --cov=cloudvault_discovery# config.yaml
scan:
providers:
aws: true
gcp: true
azure: true
skip_lets_encrypt: true
alerts:
slack_webhook: "https://hooks.slack.com/..."
severity_filter: ["CRITICAL", "HIGH"]
filters:
exclude_patterns:
- "*-test-*"
- "*-dev-*"Contributions welcome! Please read CONTRIBUTING.md first.
MIT License - see LICENSE for details.
- Inspired by Heimdall
- Certificate transparency via Certstream
- MITRE ATT&CK Framework
- π Report bugs
- π‘ Request features
- π Documentation
Made with β€οΈ for cloud security