obsidian-tc tokens can access arbitrary configured vaults
What fixes it
- 1.3.1obsidian-tc, npmGitHub
npm install obsidian-tc@1.3.1
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
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.
Text from GitHub Advisory Database
Affected versions 3
- obsidian-tc, npm< 1.3.1GitHub
- obsidian-tcaffected: < 1.3.1CVE List
- obsidian-tc, npmfrom first release, fixed in 1.3.1OSV
References 6
- github.com/The-40-Thieves/obsidian-tc/commit/38b4992e87dc2715564236e1a42d005ab05a0194Fixvia CVE List
- github.com/The-40-Thieves/obsidian-tc/releases/tag/v1.3.1Fixvia CVE List
- github.com/The-40-Thieves/obsidian-tc/security/advisories/GHSA-84c9-qqpq-2pq5Advisoryvia CVE List
- github.com/advisories/GHSA-84c9-qqpq-2pq5Advisoryvia GitHub
- github.com/The-40-Thieves/obsidian-tc/pull/72Referencevia CVE List
- nvd.nist.gov/vuln/detail/cve-2026-77366Referencevia GitHub