Skip to content

Security: filthyrake/vlog

SECURITY.md

Security Policy

Supported Versions

Version Supported
Latest

Reporting a Vulnerability

We take security vulnerabilities seriously. If you discover a security issue, please report it responsibly.

How to Report

Please do not report security vulnerabilities through public GitHub issues.

Instead, please send an email to damen@knightspeed.com with:

  1. Description of the vulnerability
  2. Steps to reproduce the issue
  3. Potential impact of the vulnerability
  4. Suggested fix (if you have one)

What to Expect

  • Acknowledgment: We will acknowledge receipt of your report within 48 hours
  • Updates: We will keep you informed of our progress
  • Resolution: We aim to resolve critical issues within 7 days
  • Credit: We will credit you in the release notes (unless you prefer to remain anonymous)

Scope

The following are in scope for security reports:

  • Authentication/authorization bypasses
  • SQL injection
  • Cross-site scripting (XSS)
  • Remote code execution
  • Path traversal vulnerabilities
  • Sensitive data exposure
  • Server-side request forgery (SSRF)

Out of Scope

  • Issues requiring physical access to the server
  • Social engineering attacks
  • Denial of service attacks
  • Issues in dependencies (please report to the upstream project)
  • Issues only exploitable with user interaction in unlikely scenarios

Security Best Practices

When deploying VLog, please follow these recommendations:

Network Security

  • Admin API (port 9001): Should only be accessible from trusted internal networks
  • Worker API (port 9002): Should only be accessible to authorized workers
  • Public API (port 9000): Can be exposed to the internet behind a reverse proxy

Authentication

  • Worker API keys are generated securely and stored as SHA-256 hashes
  • Rotate API keys periodically
  • Revoke keys for workers that are no longer in use

HTTPS

  • Always use HTTPS in production
  • Deploy behind a reverse proxy (nginx, Caddy) with valid SSL certificates
  • Enable HSTS headers

Rate Limiting

  • Rate limiting is enabled by default
  • For multi-instance deployments, use Redis storage for shared rate limit state
  • Adjust limits based on your expected traffic

Updates

  • Keep dependencies updated
  • Monitor security advisories for Python packages
  • Subscribe to GitHub security alerts

Security Features

CI/CD Security Scanning

VLog's GitHub Actions pipeline includes automated security scanning:

Tool Purpose When
Trivy Container image vulnerability scanning On Docker builds
pip-audit Python dependency vulnerability detection On every PR
Bandit Python static security analysis On every PR

Scans run automatically on pull requests and block merging if critical vulnerabilities are found.

Container Security

Production container images include:

  • Multi-stage builds: Smaller attack surface, no build tools in production
  • Non-root user: Containers run as UID 1000, not root
  • Read-only filesystem: Prevents runtime modifications
  • Dropped capabilities: All Linux capabilities dropped
  • Seccomp profile: RuntimeDefault seccomp profile applied

Example security context:

securityContext:
  runAsNonRoot: true
  runAsUser: 1000
  allowPrivilegeEscalation: false
  readOnlyRootFilesystem: true
  seccompProfile:
    type: RuntimeDefault
  capabilities:
    drop: ["ALL"]

Kubernetes Security

For Kubernetes deployments:

  • NetworkPolicy: Restricts pod-to-pod communication
  • PodDisruptionBudgets: Ensures availability during updates
  • Resource limits: Prevents resource exhaustion
  • Pinned image versions: No latest tags in production
  • Secrets management: Secrets via kubectl, never in git

Audit Logging

VLog maintains audit logs for security-relevant operations:

  • Admin authentication (login/logout)
  • Video uploads and deletions
  • Settings changes
  • Worker registration and revocation

Audit logs include:

  • Timestamp
  • Event type
  • User/IP information
  • Operation details

Configure via:

VLOG_AUDIT_LOG_ENABLED=true
VLOG_AUDIT_LOG_PATH=/var/log/vlog/audit.log
VLOG_AUDIT_LOG_MAX_BYTES=10485760  # 10 MB rotation

Input Validation

  • File uploads validated for type and size
  • SQL injection prevented via parameterized queries (SQLAlchemy)
  • XSS prevented via Content Security Policy headers
  • Path traversal prevented in file operations

Secret Management

  • API secrets stored as SHA-256 hashes
  • Session tokens use cryptographically secure generation
  • HTTP-only cookies for browser sessions
  • Environment variables for sensitive configuration

Disclosure Policy

  • We will coordinate disclosure timing with the reporter
  • We aim to release fixes before public disclosure
  • Security fixes will be released as soon as possible
  • We will publish security advisories for significant vulnerabilities

There aren’t any published security advisories