CVE-2026-54618criticalBroken access control2026-09-17
CVE-2026-54618: Obsidian Web MCP hands out vault access without a login
Before 0.2.0, Obsidian Web MCP's /oauth/authorize issues an authorization code with no login or consent, and /oauth/token swaps it for the static VAULT_MCP_TOKEN. Anyone who can reach the tunnel can read, write, move and delete notes in the whole vault.
What it is
/oauth/authorize auto-approves and issues an authorization code without any login, consent or session check, and /oauth/token exchanges that code for the static VAULT_MCP_TOKEN without authenticating the client.
With that token, an unauthenticated remote caller who can reach the intended tunnel deployment can call /mcp and use vault_read, vault_write, vault_search, vault_list, vault_move and vault_delete against the entire vault. Optional PKCE doesn't stop an attacker-started flow.
How to check
- Affected: jimprosser/obsidian-web-mcp 0.1.0 and earlier.
- Check whether your instance is exposed through a tunnel or public URL.
How to fix
- Upgrade to obsidian-web-mcp 0.2.0 or later.
- Change VAULT_MCP_TOKEN after upgrading, and review the vault for unexpected edits or deletions if it was exposed.
git -C obsidian-web-mcp describe --tags 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)