Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessPlant in-vault symlink out-of-band
-
DeliverySymlink under allowed glob targets denied folder
-
ExploitInvoke MCP read tool on symlink path
-
ExecutionLexical ACL check passes, filesystem follows link
-
ImpactDisclose denied-folder file contents
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Symlink resolution safety
|
| Exploitation Conditions | Exploitation requires three concrete prerequisites drawn from the advisory: (1) the obsidian-tc server must be configured with folder-level ACLs that have at least one allowed glob and at least one denied in-vault folder; (2) an attacker-controlled symlink must already exist inside the vault under an allowed glob and resolve into the denied folder - the description states this symlink is 'out-of-band-planted,' meaning the attacker needs a separate filesystem write channel since obsidian-tc itself does not create it; and (3) the caller must be an authenticated client (PR:L). Key LIMITING factors: the flaw cannot escape the vault root (strictly intra-vault), requires local access (AV:L) and high attack complexity (AC:H) due to the pre-planted-symlink precondition, has confidentiality-only impact (read/ACL-scope, no integrity or availability loss in the base case), and does not apply to deployments without symlinks or without a restrictive folder ACL. |
| Impact | This is a genuine-but-low-priority access-control weakness, and the signals align rather than conflict. The CVSS 3.1 vector (AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N, base 4.7 Medium) describes a local, high-complexity, authenticated bug with confidentiality-only impact and no scope change - consistent with the description, which requires an out-of-band-planted in-vault symlink and explicitly does NOT allow escape from the vault root. No EPSS score, no CISA KEV listing, and no public POC are present in the provided data, so exploitation status is 'no public exploit identified at time of analysis'; this is a defense-in-depth ACL-scoping flaw rather than an actively exploited or wormable issue. The AC:H rating is well-justified because the attacker must already be able to plant a symlink inside the vault through some other channel and the deployment must use folder ACLs with distinct allowed/denied in-vault folders. The main caveat: the input Tags label this an 'Authentication Bypass,' but the vulnerability is actually an intra-vault read/write ACL-SCOPE bypass (the attacker is already authenticated at PR:L) - it does not bypass authentication, so that signal overstates the issue. Net: real and worth patching, but not a widespread-exploitation priority. |
| Exploit ScenarioDerived | An authenticated low-privilege user of the obsidian-tc MCP server (or an AI agent acting through it) whose ACL denies a sensitive folder arranges, via an out-of-band channel, for a symlink to be placed under an allowed glob that points at the denied in-vault folder. They then invoke a read tool against the symlink path; because the ACL check uses the lexical allowed path while the filesystem follows the symlink, the denied folder's files are disclosed. No public exploit code is identified at time of analysis, and the attack stays within the vault root. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 13, 2026
Read access-control bypass in obsidian-tc before version 1.3.1 allows an authenticated MCP client to read files inside a denied vault folder by following an in-vault symlink that sits under an allowed glob. The server's folder ACL is evaluated against the lexical (pre-resolution) request path while the filesystem resolves the symlink to its real target, so the two checks disagree and the denied content is served. Exploitation is constrained: the symlink must already exist in the vault (planted out-of-band, since obsidian-tc does not create it), the attacker needs local access and an authenticated session (CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N, base 4.7), and the flaw cannot escape the vault root - it is strictly an intra-vault ACL-scope bypass with confidentiality-only impact. No public exploit code has been identified at time of analysis and the issue is not in CISA KEV; version 1.3.1 canonicalizes ACL checks through symlink resolution to close it.
RemediationAI
Vendor-released patch: obsidian-tc 1.3.1, which applies ACL enforcement to the symlink-resolved vault-relative path; upgrade via the v1.3.1 release (https://github.com/The-40-Thieves/obsidian-tc/releases/tag/v1.3.1) as detailed in advisory GHSA-c5xx-h28h-f682, and review the diff at commit c81d1687e2cfec98a0d8bc5038c029f41ea9c920 or PR https://github.com/The-40-Thieves/obsidian-tc/pull/76 if backporting. Until upgrading, audit the vault for symlinks that resolve outside their own directory and delete or replace any symlink living under an ACL-allowed glob - the trade-off is that legitimate symlink-based note organization will break, and symlinks can be re-planted so this must be paired with a filesystem-integrity or write-access control on the vault. Alternatively, tighten the ACL configuration so that allowed globs do not overlap directories containing symlinks, or disable folder-level read globs and grant per-file read access instead; the trade-off is a substantially larger and more brittle ACL ruleset that must be re-reviewed whenever vault content changes. Because exploitation requires an authenticated client (CVSS PR:L) plus a local, out-of-band symlink-planting channel (AV:L/AC:H), reducing which callers can authenticate to the MCP server and restricting filesystem write access to the vault to trusted processes materially lowers exposure. No vendor patch substitutes for these compensating controls on deployments that cannot immediately move to 1.3.1; note that the issue is strictly intra-vault and cannot read files outside the vault root even when unpatched.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
obsidian-tc (The-40-Thieves/obsidian-tc) is a governed, agent-ready Model Context Protocol server that exposes an Obsidian vault to MCP clients, implemented in TypeScript across packages such as packages/server/src/mcp/resources.ts and the tool modules under packages/server/src/tools/m1/ (frontmatter-tools.ts, links-tools.ts, notes-tools.ts). Access control is enforced by two distinct mechanisms: a vault-root containment check that operates on the fully resolved filesystem path, and a folder-level ACL (enforcePathAcl) that historically matched on a lexical, vault-relative request path string. This is a classic CWE-59 (Improper Link Resolution Before File Access, i.e. link following) split-brain: when a path component is a symlink, the lexical string still points at the allowed location while the kernel resolves the read to the denied target, so the glob-based ACL is satisfied but the data returned comes from a folder the operator intended to deny. The upstream fix (PR #76, commit c81d1687e2cfec98a0d8bc5038c029f41ea9c920, tracked as THE-269) makes resolveVaultPath also return the real symlink-resolved vault-relative path and threads the vault root into every request-path enforcePathAcl call for both 'read' and 'write' operations, so the ACL now gates the canonical path. Non-symlinked paths are unaffected. Note that vault-root escape was already blocked prior to the fix, so this is an authorization-scope defect rather than a sandbox escape; the accompanying 'Hashicorp' tag in the source data does not correspond to any HashiCorp component and appears to be noise.
Know when Obsidian Tc gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N
Requires an out-of-band local symlink plant and restrictive ACL config (AV:L, AC:H), an authenticated client (PR:L); confidentiality-only disclosure within the vault, no integrity/availability or scope change.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
obsidian-tc is a governed, agent-ready Model Context Protocol server for Obsidian vaults. Prior to 1.3.1, read access-control list (ACL) checks use a lexical vault-relative path while containment checks use the resolved path. An in-vault symlink under an allowed glob that resolves into a denied folder can therefore bypass the read ACL and expose files in the denied folder. Exploitation requires an out-of-band-planted symlink and does not permit an escape from the vault root. Version 1.3.1 fixes the vulnerability by applying ACL checks to the resolved vault-relative path.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
More in Obsidian Tc
View allImproper authorization in obsidian-tc prior to 1.3.1 lets any holder of a valid JWT reach beyond its own vault and read,
Cross-origin requests to the obsidian-tc Model Context Protocol HTTP transport let any web page a victim visits read fro
obsidian-tc versions prior to 1.3.1 fail to enforce folder access controls on direct file requests, allowing an authenti
Information disclosure in obsidian-tc (versions prior to 1.3.1) allows an authenticated caller of the MCP server to infe
EUVD-2026-98694
NVD
CVE.org
EPSS
GitHub
VulDB
Exploit-DB