Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Security: 19-84/redd-archiver

SECURITY.md

Security Policy

Supported Versions

Version Supported
1.0.x ✅ Yes
< 1.0 ❌ No (deprecated)

Reporting a Vulnerability

If you discover a security vulnerability in Redd-Archiver, please:

  1. Do NOT open a public issue
  2. Report via GitHub Security Advisories
  3. Provide:
    • Description of the vulnerability
    • Steps to reproduce
    • Potential impact assessment
    • Suggested fix (if any)
    • Your contact information for follow-up

We will acknowledge your report within 48 hours and provide a timeline for resolution.

Security Considerations

Database Security

PostgreSQL Configuration:

  • Always use strong, randomly generated passwords
  • Never commit .env files with real credentials to version control
  • Enable PostgreSQL SSL/TLS in production deployments
  • Use connection pooling limits to prevent resource exhaustion
  • Restrict database user permissions (principle of least privilege)
  • Keep PostgreSQL updated with security patches

Best Practices:

# Generate strong password
python3 -c "import secrets; print(secrets.token_urlsafe(32))"

# Set restrictive file permissions
chmod 600 .env

# Use SSL connection in production
DATABASE_URL="postgresql://user:pass@host:5432/db?sslmode=require"

Input Validation

Redd-Archiver processes untrusted Pushshift data dumps:

  • SQL Injection Prevention: All database queries use parameterized statements via psycopg3
  • XSS Prevention: Jinja2 autoescaping enabled by default for all HTML output
  • Path Traversal: File operations validate and sanitize paths
  • Data Sanitization: Pushshift data is sanitized before HTML generation

Docker Security

Container Hardening:

  • Search server runs with read-only root filesystem
  • Containers use non-root users where appropriate
  • Secrets passed via environment variables, never hardcoded
  • Minimal base images (Alpine Linux) reduce attack surface
  • Resource limits prevent DoS via resource exhaustion

Best Practices:

# Review security settings in docker-compose.yml
read_only: true        # Immutable filesystem
user: "1000:1000"      # Non-root user
cap_drop: [ALL]        # Drop unnecessary capabilities

Known Safe Operations

The following operations are designed to be safe:

  1. Static HTML Output

    • No server-side code execution in generated archives
    • All dynamic content rendered at build time
  2. PostgreSQL FTS Search

    • No eval() or exec() usage anywhere in codebase
    • Parameterized queries prevent injection
  3. Template Rendering

    • Jinja2 autoescaping prevents XSS
    • No unsafe template filters used

Dependency Security

Dependencies are defined in pyproject.toml. Key packages:

  • psycopg[binary,pool] - PostgreSQL driver with connection pooling
  • jinja2 - Template engine with autoescaping
  • zstandard - .zst decompression
  • orjson - Fast JSON parsing
  • rcssmin - CSS minification

All dependencies:

  • Use known-good versions with no critical CVEs
  • Are from trusted sources (PyPI official packages)
  • Have permissive licenses (MIT/BSD/Apache/Unlicense)
  • Are regularly updated for security patches

Deployment Security Checklist

Before deploying to production:

  • Changed all default passwords (PostgreSQL, Flask)
  • Generated strong FLASK_SECRET_KEY
  • Enabled PostgreSQL SSL/TLS
  • Set restrictive .env file permissions (chmod 600)
  • Configured firewall rules (only expose required ports)
  • Enabled Docker resource limits
  • Reviewed and applied security updates
  • Set up log monitoring and alerting
  • Configured backup strategy
  • Documented incident response plan

Updates and Patches

Security updates are released as:

  • Patch versions (1.0.x) for security fixes
  • Minor versions (1.x.0) for non-breaking security improvements
  • Out-of-band releases for critical vulnerabilities

Subscribe to release notifications to stay informed.

Responsible Disclosure

We follow responsible disclosure principles:

  • 90-day disclosure timeline after patch availability
  • Credit given to security researchers (with permission)
  • CVE assignment for vulnerabilities when appropriate

Security Resources


Last Updated: 2025-12-27

There aren't any published security advisories

Morty Proxy This is a proxified and sanitized view of the page, visit original site.