Skip to content

Security: BariBariGood/ghosthand

Security

SECURITY.md

Security policy

Ghosthand is a daemon that injects input into a live desktop session. Treat any vulnerability in it as high severity by default.

Reporting

Do not open a public issue for security problems. Use GitHub's private vulnerability reporting ("Report a vulnerability" under the Security tab), or email the maintainer address listed on the repository owner's GitHub profile.

You can expect an acknowledgement within a few days. Please include a reproduction and the daemon version / commit.

Scope and model

  • The daemon trusts any client holding the bearer token, up to that token's scope (observe = read-only, control = full; see docs/SECURITY.md). Theft of a control token = full desktop control. Report anything that lets a client act without a valid token, act beyond its token's scope (e.g. an observe token reaching a mutation), escape the lease model, bypass the human-override lockout, or replay an action into re-execution.
  • Installer authenticity: scripts/install.sh verifies the Developer ID signature and team id of what it installs and fails closed. A bypass of that verification is in scope.
  • The audit log is a tamper-evident hash chain with identity on every record and chained rotation generations. Anything that lets records be altered, dropped, or forged without breaking verification is in scope.
  • The daemon is designed to bind loopback and a private overlay network only. Configurations that expose it more broadly are out of scope, but a bug that makes the daemon bind more widely than requested is in scope.
  • Secure-input bypasses (typing into a field macOS marks as secure) are in scope.

Supported versions

Only the latest release / main receives security fixes.

There aren't any published security advisories