CVE-2026-77366criticalBroken access control2026-10-12
CVE-2026-77366: obsidian-tc MCP server let any token read and edit any vault
Before 1.3.1, the obsidian-tc MCP server for Obsidian never checked the vault a request named against the vault the caller's token was for, so any valid token could read, write or delete notes in every configured vault.
What it is
Tool dispatch trusted the caller-supplied input.vault value, the JWT had no vault claim, and the folder access list was shared across vaults.
The maintainers say this defeated multi-tenant isolation across about 90 tool call sites; only resources/read already had the check.
1.3.1 adds a central input.vault === ctx.vaultId check before the scope check.
How to check
- Affected: obsidian-tc (npm) < 1.3.1. The fix was made on a v1.3.0 tag that never shipped to npm, so 1.3.1 is the first fixed release.
- This matters most if one server process serves several vaults or users.
How to fix
- Upgrade obsidian-tc to 1.3.1 or later.
- Until then, run one vault per server process, or give each tenant its own process and credentials.
npm ls obsidian-tc Sources
More advisories for this tool
- criticalMalicious npm and PyPI packages posing as AI and MCP tools: depfix-ai, agent-trace-kit, @go-gost/mcp-darwin-x64 and my-mcp-server-driving-license-ocr
- criticalMalicious npm packages posing as MCP servers: @rfewqa-fes/mnm-doc-mcp, @lemili9804/mcp-weather-server and mcp-contract-tester
- criticalMalicious code in @bestcoolman/dev-mcp (npm)
- criticalMalicious code in @massnerder/x402-scraper-mcp (npm)