Signal Studio is in public beta. Usable, but still moving. Join the beta

Security

How to tell us about a vulnerability, what happens next, and an honest account of where the weak points are.

Reporting something

Email security@eeg.studio, or open a private advisory on the releases repository. Machine-readable contact at /.well-known/security.txt.

Please include what you did, what happened, and what you expected. A proof of concept helps enormously. If you need an account or test data to demonstrate it, ask and we will set one up.

Please do not run automated scanners against the production site. It is one small project on shared infrastructure, and a scan is indistinguishable from an attack. Ask first and we will give you what you need.

What we commit to

We willWithin
Acknowledge your report3 working days
Tell you whether we accept it, with reasoning10 working days
Fix a critical issue, or tell you why we cannot30 days
Credit you publicly, unless you prefer otherwiseOn release

This is a one-person project. If a deadline slips you will hear why rather than hearing nothing. We will not threaten anyone who reports something in good faith, and we will not ask you to sign anything before we look at it.

Scope

In scope, most wanted first

  1. Anything letting one account act as another, or read another's data.
  2. Anything letting a published extension escape its stated behaviour, or letting a package bypass review.
  3. Anything exposing an email address or account identifier.
  4. Anything letting an unapproved marketplace entry become publicly visible.
  5. Injection, in the site or in the desktop application.

Out of scope

How the system is built

AreaWhat is in place
AuthenticationClerk sessions, verified server-side against its JWKS. The author of anything is taken from the verified token, never from the request body.
API tokensOnly a SHA-256 is stored. Reading the database yields nothing usable.
File uploadsKeys are namespaced per user; the server refuses any other prefix, so one author cannot overwrite another's file.
Uploaded packagesStatic analysis over the Python AST before review, flagging shell execution, dynamic imports, shipped binaries and archive path traversal.
InstallersSHA-256 published, and Ed25519 signatures verified before an update is executed. The signing key exists only as a CI secret.
Differential updatesBoth ends hashed. A patch applied to the wrong source produces a corrupt binary silently, so every assumption is checked before anything runs.
Write endpointsTurnstile plus per-account rate limits.
TransportHTTPS only, HSTS, on Cloudflare.

Where the weak points are

Stating these is more useful than claiming there are none.

Acknowledgements

Nobody yet. Reporters who ask to be named will be listed here with the issue they found.