Ctrl K
ComunidadGuías…

SECURITY.md

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

Archivo original ↗Preguntar a KiBot
# Security policy

## Reporting a vulnerability

Report it privately through GitHub: **[Security → Report a
vulnerability](https://github.com/bjarkeef/sage/security/advisories/new)**. That
opens a draft advisory only you and the maintainer can see.

Please don't open a public issue for anything exploitable, and please don't
test against an instance you don't own.

Sage is maintained by one person, so expect a first reply within about a week.
If you've had no response after that, open a public issue saying only that you
are waiting on a security report, with no details.

## What's in scope

The code in this repository: the API (`apps/api`), the web app (`apps/web`),
the shared packages, and the Docker Compose deployment as shipped. Things worth
reporting include authentication and session handling, one account reaching
another's portfolio data, injection of any kind, and anything that turns a
self-hosted instance into a way into the machine running it.

## What isn't

- **Findings against a deployment you don't control.** Sage is self-hosted;
  each instance belongs to whoever runs it.
- **Missing hardening a self-hoster is expected to add**, such as TLS
  termination, a firewall, or a reverse proxy. `docs/DEPLOYMENT.md` says what
  the project assumes you provide.
- **Third-party market-data providers.** Report those to the provider.
- **Vulnerabilities in transitive build-time dependencies** with no path to
  running code, unless you can show that path.

## Supported versions

There are no releases yet. `main` is the only supported version, and fixes land
there. Self-hosters should pull and rebuild rather than wait for a tag.

## Known design decisions

These are deliberate, documented, and not vulnerabilities:

- **Sage sends no email**, so there is no password-reset link to phish.
  Recovery runs from a shell on the machine
  (`docker compose exec -it api sage reset-password`).
- **Signup is open until you close it.** A fresh instance lets the first
  visitor create an account; `ALLOW_SIGNUP=false` shuts it after yours. An
  instance exposed to the internet before that is a real problem, and the
  deployment docs say so.
- **Company logos and news thumbnails are off by default**, because loading
  either tells a third party which company it is for. Each is a per-user
  switch in Settings → Privacy, off for every account until that user turns it
  on; the page states what each discloses. `NEXT_PUBLIC_LOGO_DEV_TOKEN` only
  supplies a default logo.dev key and turns nothing on. With both switches off,
  nothing in Sage sends a third party anything about your positions. Reports of _other_
  undocumented outbound requests are very welcome.