Skip to content

Security: lokendar55f/district-windows

Security

SECURITY.md

Security policy

Reporting a vulnerability

Please report it privately. Do not open a public issue, discussion or pull request for it.

Include what you found, how to reproduce it, and what you think the impact is. We will acknowledge the report, keep you informed while we fix it, and credit you in the advisory unless you would rather we did not.

A vulnerability in the District AI service itself (rather than in this app) is welcome through the same channels; we will route it.

Supported versions

Only the latest release (3.3.0) receives security fixes, in the Microsoft Store build and the builds on GitHub Releases alike. Fixes ship in a new release rather than being backported.

The security model, in short

These are the rules the app is built to.

  • Sign-in happens in your browser, with OAuth 2.0 and PKCE. The app never sees your password. The verifier lives only in the memory of the running app, and a second copy of the app that Windows starts to deliver the sign-in link hands it to the first and exits.
  • Tokens. The refresh token is kept in Windows Credential Manager, never in a file. The access token lives only in memory and lasts ten minutes.
  • Logging. The app writes no log of its own, and its Rust core is compiled so that nothing below warning level can be logged at all, because some libraries it depends on would otherwise log secrets at debug level.
  • Crash reports are off until you allow them. The app asks once, with Don't send as the default, and you can change it on the Account screen. A report holds the error, where in the app it happened, and the versions of the app and Windows. Reports go to Sentry, in the European Union. They hold neither your computer's name, nor your user name, nor your IP address, and your home folder's name is replaced in any file path; Sentry still sees the connection's IP address, as any server does, and is set not to store it. Only the builds made by this repository's workflows carry the reporting address: a build you compile yourself from source, or a fork's, never asks and never sends.
  • Calls. Audio is end-to-end encrypted between participants only in a room the service gives an encryption passphrase for, as it does for a meeting room. A phone call is not: its room has a telephone leg that the carrier delivers unencrypted.

There aren't any published security advisories