The following versions of Transformation Portal are currently supported with security updates:
| Version | Supported | Notes |
|---|---|---|
| main | ✅ | Development branch - security fixes prioritized |
| 0.1.x | ✅ | Current stable release |
| < 0.1 | ❌ | Unsupported |
If you discover a security vulnerability in Transformation Portal, please DO NOT open a public issue. Instead:
- GitHub Security Advisory (Preferred): Create a private security advisory at https://github.com/RC219805/Transformation_Portal/security/advisories/new
- Direct Contact: Reach out via GitHub (@RC219805)
- Include:
- Affected version(s)
- Steps to reproduce
- Potential impact assessment
- Your contact information for follow-up
- Initial Response: Within 48 hours
- Status Update: Within 5 business days
- Resolution Target:
- Critical: 7 days
- High: 14 days
- Medium: 30 days
- Low: Next release cycle
- Acknowledgment: You'll receive confirmation that we've received your report
- Assessment: Our security team will evaluate the vulnerability
- Communication: We'll keep you informed throughout the resolution process
- Credit: With your permission, we'll acknowledge your contribution in the fix announcement
This repository uses:
- Dependabot: Automated dependency updates for security vulnerabilities
- Code Scanning: CodeQL analysis on every PR
- Secret Scanning: Prevents accidental credential commits
- Security Advisories: Private vulnerability reporting via GitHub
- Branch Protection: Main branch requires security checks to pass
- Workflow Token Permissions: All workflows use least-privilege
permissions:declarationscontents: read(default) - Read-only repository accesscontents: write- Only for dependency submission and automated PR creationsecurity-events: write- CodeQL and security scanning onlypull-requests: write- AI code review bot only
Given our image/video processing nature, special attention is required for:
-
File Upload Security:
- Maximum file size limits (default: 500MB for images, 5GB for videos)
- Strict MIME type validation
- Magic number verification for file formats
- Filename sanitization to prevent path traversal
-
TIFF Processing:
- Validation of TIFF tags to prevent buffer overflows
- Limits on image dimensions (max 65536x65536)
- Protection against compression bombs
- Depth Anything V2 Model: Validate input dimensions to prevent memory overflow (max 4096x4096)
- Point Cloud Generation: Limit vertex count to prevent DoS (max 10M vertices)
- Temporary File Management: Secure cleanup of intermediate depth maps
- GPU Memory: Monitor and limit VRAM usage (default: 8GB max)
-
Model Files:
- Only load models from trusted sources
- Verify model checksums before loading
- Sandboxed model execution environment recommended
-
Depth Pipeline:
- Input size restrictions to prevent OOM attacks
- Rate limiting for API endpoints
- Secure temporary file handling for intermediate outputs
-
Supply Chain:
- All dependencies use version constraints to balance security and compatibility
- For security-critical deployments, consider strict version pinning (e.g., via lock files)
- Regular dependency audits via
pip-audit(governed scanner in CI) - Automated security scanning in CI/CD pipeline
-
Recent Security Updates:
March 2026:
- PyTorch CVE-2025-32434 - Critical RCE vulnerability via torch.load()
- Supported-lane remediation: macOS Apple Silicon ML core lock rotates to
torch==2.8.0/torchvision==0.23.0 - Frozen-lane posture: Linux and macOS Intel remain unsupported/frozen historical ML lanes
- Defense in depth: Runtime enforcement of
weights_only=Trueremains mandatory for all torch.load() calls - Implementation: Use
transformation_portal.core.security.torch_security.safe_load()
- Supported-lane remediation: macOS Apple Silicon ML core lock rotates to
- Hugging Face
Traineradvisory GHSA-69w3-r845-3855- Disposition: Managed inference paths do not use
transformers.Trainer,Seq2SeqTrainer,TrainingArguments,_load_rng_state, or training-resume flows - Action: Dependabot alerts are dismissed as
not_usedwith repo search evidence instead of forcing atransformers5.x pre-release upgrade into inference stacks
- Disposition: Managed inference paths do not use
- Pillow>=10.3.0 - Fixed CVE-2024-28219 (buffer overflow vulnerability)
- cryptography==46.0.5 - Fixed GHSA subgroup attack vulnerability (SECT curves)
- black==26.3.1 - Fixed arbitrary file writes from unsanitized cache names
January 2026:
- protobuf 6.34.0 - Fixed CVE-2026-0994 / GHSA-7gcm-g887-7qv7 (Dependabot #69)
- Workflow Hardening - Stricter token permissions across all GitHub Actions workflows
- Quality Gate - Fixed duplicate permissions block (aa555e0a)
- PyTorch CVE-2025-32434 - Critical RCE vulnerability via torch.load()
-
Security vs Determinism Policy:
- Transformation Portal prioritizes reproducibility over latest versions (ADR-032)
- Supported-lane security fixes prefer controlled baseline rotations over opportunistic broad upgrades
- Version upgrades only occur during controlled baseline rotations
- All torch.load() calls MUST use
weights_only=Trueparameter
-
Known Vulnerabilities (Mitigated):
- Supported Apple Silicon lane runs on torch
2.8.0/ torchvision0.23.0 - Frozen macOS Intel ML lane remains unsupported and gated behind
TP_ALLOW_MACOS_INTEL_ML=1 requirements/ml-core-linux.txtis a frozen unsupported historical lane and must not drive supported-lane remediation- All model loading uses safe_load() wrapper or explicit weights_only=True
- Pillow: Critical for image parsing vulnerabilities
- NumPy: Monitor for numerical computation exploits
- Supported Apple Silicon lane runs on torch
-
Temporary CVE Exceptions (Awaiting Upstream Fix):
- CVE-2026-4539 (Pygments <=2.19.2): DoS via inefficient regex in AdlLexer
- Status: No upstream fix available as of March 2026
- Impact: Low - affects syntax highlighting only (typer → rich → pygments)
- Exposure: CLI help text rendering, not production image processing
- Mitigation: CI pip-audit configured with
--ignore-vuln CVE-2026-4539 - Tracking: pygments/pygments#3058
- Action Required: Remove exception when fixed Pygments is released
- CVE-2026-4539 (Pygments <=2.19.2): DoS via inefficient regex in AdlLexer
If exposing Transformation Portal as a service:
- Authentication: Implement API key or OAuth 2.0
- Rate Limiting:
- Default: 100 requests/minute per IP
- Heavy operations: 10 requests/hour
- Input Sanitization: All user inputs must be validated
- Output Filtering: Ensure no metadata leakage in processed files
# If using Flask/FastAPI
headers = {
"X-Content-Type-Options": "nosniff",
"X-Frame-Options": "DENY",
"X-XSS-Protection": "1; mode=block",
"Strict-Transport-Security": "max-age=31536000; includeSubDomains",
"Content-Security-Policy": "default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline'"
}Security features may impact performance:
- File validation: +100-500ms per upload
- Model checksums: +2-5s on first load
- Input sanitization: +50-200ms per request
- Memory clearing: +10-20% processing overhead
- Depth map bounds checking: +50ms per frame
Note: These overheads are configurable and can be tuned based on your security requirements
# Run with minimal privileges (recommended)
sudo -u nobody python -m transformation_portal.cli
# Or use systemd service with User directive:
# [Service]
# User=nobody
# Group=nogroup
# Use read-only filesystem where possible
docker run --read-only --tmpfs /tmp transformation_portal:latest
# Enable security headers if web-facing
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
Content-Security-Policy: default-src 'self'Note: The project currently uses config/default_config.yaml for depth pipeline settings (see actual structure with depth_model.variant, processing.zone_tone_mapping, optimization.memory_limit_gb, etc.). The following represents recommended security-related configuration fields that should be implemented for production deployments:
# Recommended security configuration (not currently implemented)
# These settings should be added to application configuration for production use
security:
max_file_size: 524288000 # 500 MiB (500 * 1024 * 1024 bytes)
allowed_extensions: ['.jpg', '.png', '.tiff', '.mp4', '.mov']
temp_directory: '/tmp/transformation_portal'
cleanup_interval: 3600 # seconds
depth_processing:
max_input_dimension: 4096
max_vertices: 10000000
memory_limit_gb: 8 # GB (see: optimization.memory_limit_gb in default_config.yaml)- EXIF Data: Option to strip all metadata from outputs
- Watermarking: Support for invisible watermarks for tracking
- Temporary Files: Secure deletion with multi-pass overwrite
- Memory: Clear sensitive data from memory after processing
Before submitting PRs:
# Run code quality and security checks
make quality-check
# Run full test suite
make test-full
# Install governed security tools from requirements/security.txt
pip install -r requirements/security.txt
# Run static security analysis
bandit -r src/ -ll
# Run dependency vulnerability scan
pip-auditIn case of a security breach:
-
Isolate: Immediately isolate affected systems
- Disable affected endpoints
- Revoke compromised credentials
-
Assess: Determine scope and impact
- Identify affected versions
- Review access logs
- Determine data exposure
-
Notify: Alert users within 72 hours if data was compromised
- GitHub Security Advisory
- Email to affected users (if applicable)
- Update security status page
-
Patch: Deploy fixes with priority
- Emergency patch for critical vulnerabilities
- Coordinate disclosure with reporters
-
Review: Post-mortem and update security measures
- Document lessons learned
- Update security policies
- Implement additional monitoring
- Python 3.10+ (older versions have known vulnerabilities)
- FFmpeg 6+ (addresses multiple CVEs from earlier versions)
- Operating System with DEP/ASLR support
- Minimum 8GB RAM to prevent swap file exposure
- GPU drivers with security updates (NVIDIA 525+ for CUDA operations)
- HTTPS only for any network operations
- Disable unnecessary network features in production
- Firewall rules to restrict outbound connections
- No telemetry or phone-home features by default
No formal security audits have been conducted yet. This section will be updated as audits are completed.
This project aims to maintain compliance with:
- CWE Top 25: Addressing most dangerous software weaknesses
- OWASP Top 10: Web application security (if applicable)
- PCI DSS: Not applicable (no payment processing features)
- GDPR: For EU user data protection (metadata handling)
- AI Security: Following OWASP ML Security Top 10
Security scanning tools are governed in CI via requirements/security.txt:
# Install governed security tools (bandit, pip-audit)
pip install -r requirements/security.txt
# Run dependency vulnerability scan
pip-audit
# Run static security analysis
bandit -r src/
# Additional optional tools (not governed)
pip install semgrep
semgrep --config=auto
# Existing project tools
pylint --enable=security
# Container scanning (if using Docker)
# Install trivy: https://github.com/aquasecurity/trivy
trivy image transformation_portal:latestNote: pip-audit and bandit are the governed security tools installed from requirements/security.txt in CI. Additional tools like semgrep can be installed separately as needed for security auditing.
We support responsible disclosure and will:
- Not pursue legal action against security researchers acting in good faith
- Work collaboratively to understand and resolve issues
- Publicly acknowledge researchers (with permission)
- Maintain a hall of fame for security contributors
- Consider bug bounties for critical findings (case-by-case basis)
Primary: Create a security advisory at https://github.com/RC219805/Transformation_Portal/security/advisories/new GitHub: @RC219805 Response Time: 48 hours maximum
- docs/guides/BEST_PRACTICES.md - General best practices for contributors
- docs/version_history/changelog.md - Version history and security updates
- docs/architecture/ARCHITECTURE.md - System architecture and security considerations
Last Updated: March 2026 Next Review: June 2026 Security Policy Version: 1.1