GitHub Advisoryadvisory · npm

GHSA-84c9-qqpq-2pq5 obsidian-tc tokens can access arbitrary configured vaults

CRITICAL Published 2026-10-23 Modified 2026-10-23 Official page ↗
Aliases
CVE-2026-77366
Ecosystem
npm
Packages
obsidian-tc
Severity
Critical
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Weaknesses
CWE-639, CWE-863
Reviewed
2026-10-23

Affected packages

• npm obsidian-tc: < 1.3.1 → fixed in 1.3.1

Description

Impact Tool dispatch did not check the caller-supplied `input.vault` against the caller's bound vault (`ctx.vaultId`); the folder ACL was a single global instance and the JWT carried no vault claim. As a result, any valid token could read, write, or delete any configured vault by passing `input.vault`, defeating multi-tenant isolation across ~90 tool sites. (`resources/read` was the only surface that already guarded this.) Patches Fixed in 1.3.1 (the fix was developed on the `v1.3.0` tag, which never published to npm; 1.3.1 is the first published release with the fix). Upgrade to `>= 1.3.1`. Workarounds Run a single vault per server process, or isolate each tenant on a separate process/credential. Fix A central `input.vault === ctx.vaultId` guard was added in dispatch before the scope check.

Related

Alias · CVE (1)

  • CVE-2026-77366 obsidian-tc is a governed, agent-ready Model Context Protocol server for Obsidian vaults. vulnerability

Weakness · CWE (2)

  • CWE-639 Authorization Bypass Through User-Controlled Key weakness
  • CWE-863 Incorrect Authorization weakness

References