Packages

MCP for Elixir and Phoenix: a server for both protocol eras and stdio, with tasks, MCP Apps, middleware and proxying; an OAuth 2.1 authorization server on your own login, or your own; and a client that authorizes itself.

Current section

Files

Jump to
sake SECURITY.md
Raw

SECURITY.md

# Security policy

## Supported versions

Security fixes go into the latest release. Sake is before 1.0, so a fix
is released as a new patch or minor version of the current series, not
backported to older ones.

| Version | Supported |
| --- | --- |
| 0.2.x | yes |
| 0.1.x | no (an early preview, retired) |

## Reporting a vulnerability

Please do not open a public issue for a vulnerability. Report it
privately through GitHub's private vulnerability reporting: the
"Report a vulnerability" button on the repository's Security tab
(https://github.com/hattoriai/sake/security/advisories/new).

Include what you found, the version or commit, and how to reproduce it
if you can. The maintainers follow up in the report itself, and publish
a fix with a GitHub security advisory once a report is confirmed.

## What is in scope

Sake takes requests from MCP clients and browsers, which anyone can
craft, and issues and checks the tokens that guard them. A problem is in
scope when such a request, token or upstream response can:

- call a tool, read a resource or reach a task that the token, its
  scopes or its resource do not allow, or that belongs to another
  person, client or server;
- obtain, replay or forge an authorization code, an access or refresh
  token, a DPoP proof, a client assertion or a JWT grant, or get one
  issued for another client, resource or person;
- get past the consent page, PKCE, the `Origin` check, a redirect URI
  check or the step-up on how the person signed in;
- make `Sake.Client` or `Sake.Proxy` send a token or a request where it
  should not go;
- crash the server, or make it or its stores do unbounded work.

`guides/security.md` describes what Sake defends against and what it
leaves to the host (rate limiting, HTTPS, the CIMD fetch's DNS gap).
What a tool does with its arguments, and who the host's login lets in,
are the host's.