GitHub Advisoryadvisory · npm
GHSA-84c9-qqpq-2pq5 obsidian-tc tokens can access arbitrary configured vaults
CRITICAL
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
References
- https://github.com/The-40-Thieves/obsidian-tc/security/advisories/GHSA-84c9-qqpq-2pq5 web
- https://github.com/The-40-Thieves/obsidian-tc/pull/72 web
- https://github.com/The-40-Thieves/obsidian-tc/commit/38b4992e87dc2715564236e1a42d005ab05a0194 web
- https://github.com/The-40-Thieves/obsidian-tc package
- https://github.com/The-40-Thieves/obsidian-tc/releases/tag/v1.3.1 web
- https://nvd.nist.gov/vuln/detail/cve-2026-77366 advisory