Skip to content

Security

Supported versions

Only the latest release receives security fixes.

Version Supported
Latest (main)
Older releases

Reporting a vulnerability

Do not open a public GitHub issue for security vulnerabilities.

Report privately via GitHub Security Advisories.

  • Expected response: within 72 hours
  • Fix timeline: best effort, typically within 7 days for critical issues
  • Credit: reporters are acknowledged in the release notes unless anonymity is preferred

Automated security scanning

Every pull request runs the following checks automatically:

Tool What it scans Severity threshold
Trivy Docker image CVEs CRITICAL, HIGH, MEDIUM
gitleaks Hardcoded secrets and tokens All
pip-audit Python dependency CVEs (OSV database) All
detect-private-key PEM-formatted private keys All
flowchart LR
    PR([Pull Request]) --> T[🔒 Trivy\nDocker image CVE scan]
    PR --> G[🔍 gitleaks\nSecrets detection]
    PR --> P[📦 pip-audit\nDependency CVEs]
    PR --> D[🔑 detect-private-key\nPEM key detection]
    T & G & P & D --> R{All clear?}
    R -->|❌ Found issues| X([🚫 PR blocked])
    R -->|✅ Clean| M([✅ Safe to merge])

Container security

The Docker image is built with defence-in-depth:

Control Value
Base image python:3.14.6-slim (minimal attack surface)
Runs as UID 1001 (quiz — non-root)
Filesystem readOnlyRootFilesystem: true
Capabilities All dropped (drop: [ALL])
Privilege escalation Disabled
Image signing cosign keyless signing on every release

Dependency updates

Dependencies are kept current automatically:

  • Renovate — updates pre-commit hook revisions and Dockerfile tool versions weekly
  • Dependabot — updates Python packages (pip) and GitHub Actions weekly