critical

CVE-2026-77366

npm · obsidian-tc

Summary

obsidian-tc tokens can access arbitrary configured vaults

Severity
critical
CVSS
9.9
EPSS
0.3% (p23)
CWE
CWE-639, CWE-863
Also known as
GHSA-84c9-qqpq-2pq5
Published
2026-10-23
Updated
2026-10-23

Advisory details

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.

References

Related advisories

Is your project exposed to this? Stateward checks every dependency on every pull request and flags it only if your code actually reaches it.

Check my repo

Summarize with AI

ChatGPTClaudePerplexity

Sources: CISA KEV (public domain), OSV.dev & GitHub Advisory Database (CC-BY-4.0), FIRST EPSS, NVD/CWE (public domain). Served live from the Stateward advisory database.