Ctrl K
ComunidadGuías…

SECURITY.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# 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.