GHSA-84c9-qqpq-2pq5

Suggest an improvement
Source
https://github.com/advisories/GHSA-84c9-qqpq-2pq5
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-84c9-qqpq-2pq5/GHSA-84c9-qqpq-2pq5.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-84c9-qqpq-2pq5
Aliases
Published
2026-10-23T17:29:17Z
Modified
2026-10-23T17:45:03Z
Severity
  • 9.9 (Critical) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H CVSS Calculator
Summary
obsidian-tc tokens can access arbitrary configured vaults
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.

Database specific
{
    "cwe_ids":  [
        "CWE-639",
        "CWE-863"
    ],
    "github_reviewed":  true,
    "github_reviewed_at":  "2026-10-23T17:29:17Z",
    "nvd_published_at":  "2026-10-12T18:17:23Z",
    "severity":  "CRITICAL"
}
References

Affected packages

npm / obsidian-tc

Package

Affected ranges

Type
SEMVER
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
1.3.1

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-84c9-qqpq-2pq5/GHSA-84c9-qqpq-2pq5.json"