SECURITY.md
Rama main · réplica de lectura del repositorio original.
# Security Policy
## Supported versions
| Version | Supported |
| -------------------- | ------------------ |
| Latest release | :white_check_mark: |
| Anything older | :x: |
Streamline is maintained by one person. Fixes land in a new patch release on top
of the latest version; older releases are not backported. Upgrade before
reporting.
## Reporting a vulnerability
**Do not open a public issue.**
Use GitHub's private vulnerability reporting:
[Report a vulnerability](https://github.com/datahearth/streamline/security/advisories/new).
If that is unavailable to you, email dev@antoine-langlois.net instead.
Please include:
- The version and how it is deployed (Docker, Helm, Nix, binary)
- What an attacker can do — read other users' data, escalate to admin, reach the
host filesystem, etc.
- Steps to reproduce, ideally with the relevant config (secrets redacted)
Expect an acknowledgement within a week and a fix or a decision within 30 days
for anything exploitable. This is a spare-time project, not a vendor with an
on-call rotation — if something is actively being exploited, say so up front and
I will prioritise it. I will credit you in the advisory and the changelog unless
you'd rather stay anonymous.
Please give me a chance to ship a fix before disclosing publicly. There is no
bug bounty.
## Scope
In scope — anything that breaks the security model of a correctly configured
instance:
- Authentication or session bypass (`streamline_session` cookie, JWT, API keys,
the Subsonic `/rest` and OPDS `/opds` credentials)
- Reaching more through a public share link (`/share/{token}`) than the tracks
it was made for, or after its owner lost the right to share
- Privilege escalation between users, or past RBAC on `/api/v1/*`
- OIDC flow flaws — account takeover via identity linking, state/nonce/PKCE
handling
- Path traversal or arbitrary write via import, rename, or media paths
- SSRF via indexer, download-client, media-server, or metadata endpoints, or
the artwork proxies (`/posters/...`)
- SQL injection, stored XSS in the SPA, secrets leaking into API responses or
logs
- Supply-chain issues in the release pipeline — signing, SBOM, image build
Out of scope:
- Exposing Streamline to the internet without TLS or a reverse proxy. It is
built to sit behind one.
- The Subsonic protocol's own design. Its token scheme is `md5(password + salt)`,
so the per-user Subsonic password is stored recoverable by necessity; it is
separate from the account password and never accepted by the web UI or the
REST API.
- Anything requiring existing admin credentials. Admins can already write config
and read the library by design.
- Resource exhaustion from your own configuration — huge libraries, aggressive
RSS intervals, an indexer returning millions of results.
- Vulnerabilities in Plex, Jellyfin, Emby, qBittorrent, Transmission, Deluge or
Prowlarr themselves. Report those upstream.
- Dependency CVEs with no demonstrated path to exploitation in Streamline. A
scanner's raw output is not a report; every image is already grype-scanned
before it is tagged, and a fixable high or critical finding blocks the release.
- Missing hardening headers, cookie-flag nitpicks, or best-practice findings
with no attack behind them.
## What's already in place
Release artifacts are signed with cosign (keyless, GitHub OIDC) and ship SPDX
SBOMs; images are signed, SBOM-attested and grype-scanned on every push. See
[Verifying images](README.md#verifying-images) for the verification commands.