Skip to main content

CloudVault - Multi-Cloud Storage Security Scanner

License: MIT Python 3.9+ GitHub Actions

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.

🚀 Features

Core Capabilities

  • 🔍 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

Advanced Features (Beyond Heimdall)

  • 🔔 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

📦 Installation

# 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

🎯 Quick Start

Basic Scan (Static Domain List)

# Create domain list
echo "example.com" > domains.txt
echo "company.com" >> domains.txt

# Scan
cloudvault scan --source domains.txt --output findings.json

Real-Time Monitoring (Certificate Transparency)

# 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

Dashboard & Analysis

# 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

Export & Reporting

# 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

Auto-Remediation

# Generate Terraform
cloudvault remediate -i findings.json -f terraform --dry-run

# Generate AWS CLI commands
cloudvault remediate -i findings.json -f awscli

Compliance Audit

# 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

📋 Commands Reference

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

🔧 Advanced Usage

Filtering Syntax

# 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

Alert Configuration

# 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

CI/CD Integration

# .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

📊 Output Examples

Dashboard

╔═══════════════════════════════════════════════════════════╗
║                  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

Attack Chain Analysis

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)

Compliance Report

📋 CIS Compliance Report
============================================================

├─ Total Controls: 2
├─ ✓ Passed: 0
└─ ✗ Failed: 4

├─ CIS-2.1.5: Ensure S3 buckets are not publicly accessible
   └─ ✗ company-prod-backups

🏗️ Architecture

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

🧪 Testing

# Run tests
pytest tests/ -v

# With coverage
pytest tests/ --cov=cloudvault_discovery

📝 Configuration

# 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-*"

🤝 Contributing

Contributions welcome! Please read CONTRIBUTING.md first.

📄 License

MIT License - see LICENSE for details.

🙏 Acknowledgments

📞 Support


Made with ❤️ for cloud security

Metadata

Release files for cloudvault4 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cloudvault4 2.0.0
File Size Uploaded Provenance Actions
cloudvault4-2.0.0.tar.gz 140.4 kB Without provenance Details for cloudvault4-2.0.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for cloudvault4 2.0.0
File Interpreter ABI Platform Actions
cloudvault4-2.0.0-py3-none-any.whl Python 3 none any Details for cloudvault4-2.0.0-py3-none-any.whl

Total release size: 341.1 kB

Release files / cloudvault4-2.0.0.tar.gz

Download URL cloudvault4-2.0.0.tar.gz
Size 140.4 kB
Tags Source
SHA-256 checksum
How to use checksums
968149eb210903f7c7b8ed2dc69fe0a11d3d0ecb06f588dfe1792e676d8db948
BLAKE2b-256 checksum
How to use checksums
48c1a69595256729c4053dffa95b01c5cd76c2cd4a45b23129e7d9c8e8c3dd1c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.8

Release files / cloudvault4-2.0.0-py3-none-any.whl

Download URL cloudvault4-2.0.0-py3-none-any.whl
Size 200.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
94dd8605cfcc3ac7feed838343a19dd9356e5f516e5417ce93fe0b3051deaff3
BLAKE2b-256 checksum
How to use checksums
c413dce3ee6d79aae147449e5d285572c765db2cfd15e528c2c4481ff6cd7f00
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.8

Security for cloudvault4 2.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page