NewApp Monitoring is liveSign up free
AgentbeamBeta
Open-source package vulnerability · npm

CVE-2026-77366: obsidian-tc tokens can access arbitrary configured vaults

criticalCVSS 3.1 9.9GHSA-84c9-qqpq-2pq5

obsidian-tc before 1.3.1 does not check the caller-supplied `input.vault` against the vault the caller's token is bound to. Any valid token can read, write or delete any configured vault, so multi-tenant isolation fails. Upgrade to 1.3.1.

Published Oct 23, 2026 · Analysis Oct 23, 2026

What an attacker can do

In affected versions, tool dispatch took input.vault from the request and never compared it with the caller's bound vault, ctx.vaultId. The folder ACL was a single global instance, and the JWT carried no vault claim. A caller with any valid token could name another vault in input.vault and act on it. The advisory counts about 90 tool call sites affected. Only resources/read already had the guard.

A token holder needs low privileges and no user interaction. They get read, write and delete over every vault the server has configured, including those that belong to other tenants. The CVSS vector scores that as a changed scope with high impact on confidentiality, integrity and availability.

This matters for anyone running one obsidian-tc server for several users or teams, each with their own vault and token. A single-vault server has nothing else to reach. The fix adds a central input.vault === ctx.vaultId guard in dispatch before the scope check.

Who is affected

Affected: npm package obsidian-tc before 1.3.1, on servers that configure more than one vault and issue tokens per vault. The fix was developed on the v1.3.0 tag, which never published to npm, so 1.3.1 is the first published release with it. Check:

npm ls obsidian-tc

obsidian-tc

Ecosystem
npm
Affected
< 1.3.1
Fixed in
1.3.1
Check
npm ls obsidian-tc

How to fix it

Upgrade to obsidian-tc 1.3.1 or later.

npm install obsidian-tc@latest

The advisory's workaround: run a single vault per server process, or isolate each tenant on a separate process with its own credential. Treat the contents of other vaults as exposed if a token holder was not fully trusted.

How to tell if you were hit

Review the server's tool-call logs for requests where input.vault differs from the vault the token was issued for. Check each vault for notes created, edited or deleted by a caller you do not expect, and for files removed outside normal activity. Version control or backup history of the vault helps find unauthorized changes.

Original advisory

From the GitHub Advisory Database (CC BY 4.0).

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.

Credited to suavecito585.

Questions

Does CVE-2026-77366 matter if I run only one vault?

Not for cross-vault access, since there is no second vault to reach. The flaw defeats isolation between configured vaults.

What does the attacker need?

A valid token for any vault on the server. The token's own vault does not limit which vault input.vault can name.

Why is 1.3.1 the first fixed version?

The fix was built on the v1.3.0 tag, which never published to npm, so 1.3.1 is the first published release with the fix.

References

How this page is made: the data panel comes from the GitHub Advisory Database, CISA’s KEV catalog, the NVD and FIRST EPSS, and updates twice a day. The analysis is written by an AI model from the sources listed above and checked by automated rules before it is published. Check versions against the vendor's advisory before you act. Methodology

More npm vulnerabilities

All npm entries