SECURITY.md
Rama main · réplica de lectura del repositorio original.
# Security Policy
## Supported Versions
milmil is in active development. Security fixes are applied to the latest release on `main`.
| Version | Supported |
| ------- | ------------------ |
| latest | :white_check_mark: |
| older | :x: |
## Reporting a Vulnerability
**Please do NOT open a public GitHub issue for security vulnerabilities.**
Report vulnerabilities privately via one of the following channels:
1. **GitHub Security Advisory** (preferred) —
[Open a private report](https://github.com/milmil-dev/milmil/security/advisories/new).
2. **Email** — `milmil.dev@proton.me`
Please include:
- A description of the vulnerability and its impact
- Steps to reproduce, or a proof-of-concept
- The version / commit you tested against
- Any suggested mitigation, if known
### What to expect
- **Acknowledgement** within 72 hours.
- **Assessment + initial response** within 7 days, including whether the report
is accepted, requires more information, or is out of scope.
- **Coordinated disclosure** — once a fix is ready and released, we'll publish
a GitHub Security Advisory crediting the reporter (unless anonymity is
requested).
### Scope
In scope:
- Authentication / authorization bypass (JWT, 2FA, OAuth flows)
- Server-side credential leakage (encryption-at-rest for storage credentials,
OAuth tokens, etc.)
- Path traversal in scanner / file serving
- Server-side request forgery in metadata fetchers / RSS / torrent search
- Stored or reflected XSS in the web UI
- SQL injection in any API endpoint
Out of scope:
- Findings against a fork or modified version we do not maintain
- Vulnerabilities requiring physical access to the host machine
- Issues in third-party services we integrate with (Bangumi, AniList, TMDB,
DandanPlay, rclone backends) — please report those upstream
- Self-XSS or social engineering of legitimate users
## Hardening Recommendations for Operators
- Always set `JWT_SECRET` and `MILMIL_ENCRYPTION_KEY` to unique, random
32+ character values. Never reuse the example values from
`api/.env.example`.
- Run milmil behind a reverse proxy with TLS (Caddy, nginx, Traefik).
- Restrict the torrent listen port (`TORRENT_LISTEN_PORT`, default 42069)
to expected peers — do not expose the API port (8080) directly to the
internet without authentication.
- Keep PostgreSQL / Redis bound to the docker network, not 0.0.0.0.
- Rotate `JWT_SECRET` when granting / revoking long-lived API tokens.