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 --tagsSources
More advisories for this tool
- criticalCVE-2026-102503: Google Agent Mesh let any peer call MCP backends through an unchecked ingress
- criticalCVE-2026-96620: Claude Agent SDK (Python) resume option lets attackers run commands
- criticalCVE-2026-95182: DeepSeek Harness can be tricked into running a planted fake npx
- criticalCVE-2026-77366: obsidian-tc MCP server let any token read and edit any vault