Skip to main content

obsidian-tc EUVDEUVD-2026-98694

| CVE-2026-77361 MEDIUM
Improper Link Resolution Before File Access (CWE-59)
2026-10-13 GitHub_M
4.7
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Plant in-vault symlink out-of-band
  2. Delivery
    Symlink under allowed glob targets denied folder
  3. Exploit
    Invoke MCP read tool on symlink path
  4. Execution
    Lexical ACL check passes, filesystem follows link
  5. Impact
    Disclose 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

obsidian-tc < 1.3.1

Affected Packages

euvd obsidian_tc fix: 1.3.1

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

Vendor (GitHub_M) PRIMARY 4.7 MEDIUM
AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N
vuln.today AI 4.7 MEDIUM

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.

3.1 AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N
4.0 AV:L/AC:H/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Local
Attack Complexity
High
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

1
Patch available
Oct 13, 2026 - 15:17 EUVD

DescriptionCVE.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

EPSS Score
0.1%
Top 99% exploitable
Prevalence
Rare
niche open-source Obsidian MCP server, tiny real-world deployment footprint
Data Quality
6 sources
Confidence: High

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

24
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +24
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy