Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege MCP caller
-
ExploitInvoke tasks_filter / makemd_query / list_templates
-
ExecutionReceive unfiltered group counts, sibling fields, template bodies
-
ImpactInfer or read notes outside read ACL
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK
2 techniques across 2 tactics: Collection, Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires (1) an authenticated caller with access to the obsidian-tc MCP server (PR:L), and (2) a read whitelist / read ACL being configured on the vault - the patch explicitly states 'No change when no read whitelist is configured,' so deployments without a read whitelist are not affected. The specific vulnerable surfaces are the tasks_filter tool (leaks group counts aggregated over the UNFILTERED task set), the makemd_query tool (passes unfiltered '...result' sibling fields through), and the list_templates tool (exposes template paths and parsed user-function bodies without a read-whitelist check). Limiting factors: the attacker must already be authenticated, the deployment must rely on a read ACL to segregate notes, and the disclosure is limited to path-attributable metadata, aggregate counts, and template bodies rather than arbitrary full-note contents - so impact is confidentiality-only inference/read of out-of-ACL notes, with no integrity or availability effect. |
| Impact | This is a genuinely low-priority information-disclosure issue, and the available signals are internally consistent. The vendor CVSS 3.1 vector (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N, base 4.3) describes a network-reachable but authenticated (PR:L) flaw with only low confidentiality impact and no integrity or availability impact - consistent with the description, which limits the attacker to inferring or reading data from notes outside their own read ACL rather than full vault compromise. No EPSS score was provided in the input, so exploitation probability cannot be quantified. The vulnerability is NOT listed in CISA KEV and no public exploit code was supplied; the only 'source code evidence' is the vendor's own remediation commit, which is a patch, not a weaponized POC. Crucially, the fix notes 'No change when no read whitelist is configured,' meaning the flaw is only exploitable in deployments that actually rely on a read ACL/whitelist to segregate notes - a conditional, trust-boundary leak rather than a broadly exploitable bug. Overall: real but minor, best treated as routine patch-on-next-cycle unless you depend on obsidian-tc's read ACL for multi-tenant or least-privilege note access. |
| Exploit ScenarioDerived | In an obsidian-tc deployment that uses a read whitelist to restrict which notes a given agent/caller may read, an authenticated low-privilege caller invokes tasks_filter, makemd_query, or list_templates. Because those bridge tools return aggregate group counts, unfiltered sibling result fields, or template paths and parsed user-function bodies without applying the read whitelist, the caller infers or directly reads content from notes outside their ACL. No public exploit code is known; exploitation requires valid authenticated access and low complexity once a read whitelist is in use. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 13, 2026
Information disclosure in obsidian-tc (versions prior to 1.3.1) allows an authenticated caller of the MCP server to infer or read note data that falls outside their configured read access-control list. The flaw affects deployments that rely on a read whitelist to segregate vault notes: tasks_filter returns group counts aggregated over the unfiltered task set, makemd_query passes unfiltered sibling result fields through, and list_templates exposes template paths and parsed user-function bodies without a read-whitelist check, so an authenticated caller with PR:L privileges can obtain path-attributable metadata, aggregate counts, and template content from notes they are not permitted to read. The impact is confidentiality-only (CVSS 3.1 base 4.3, C:L, no integrity or availability effect), and no public exploit identified at time of analysis; the vendor released version 1.3.1 to correct the behavior.
RemediationAI
Upgrade obsidian-tc to version 1.3.1 or later; this is the vendor-released fix, published as release tag v1.3.1 (https://github.com/The-40-Thieves/obsidian-tc/releases/tag/v1.3.1) and detailed in advisory GHSA-43r2-c7g8-prc8 (https://github.com/The-40-Thieves/obsidian-tc/security/advisories/GHSA-43r2-c7g8-prc8), with the code change in commit 5ab2109274acf0070601fa71a62b14ddc9652309 and pull request https://github.com/The-40-Thieves/obsidian-tc/pull/75. After upgrading, tasks_filter and makemd_query return only the ACL-filtered items (the leaky unfiltered '...result' siblings are dropped) and list_templates throws an aclDenied error whenever a read whitelist is active, matching the existing fail-closed contract of search_dql; the trade-off is that list_templates becomes unavailable under a read whitelist, which is intentional and should be accounted for in agent workflows or automations that depend on it. If immediate upgrade is not possible, treat the read whitelist as a defense-in-depth control rather than a confidentiality boundary: restrict which principals can authenticate to the MCP server and reach the affected bridge tools (the attacker must already hold an authenticated session), or disable the tasks_filter, makemd_query, and list_templates tools entirely until patched - noting that disabling them removes legitimate functionality for all callers, and that removing the read whitelist is not a valid mitigation since it simply restores full-vault enumeration rather than protecting the segregated notes. No vendor workaround short of upgrading is described in the available references.
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 is a governed, agent-ready Model Context Protocol (MCP) server that exposes tools for operating on Obsidian vaults, including a set of 'bridge' tools that proxy data from Obsidian plugins such as Tasks, make.md, and Templater. The product implements a read access-control list (read whitelist) that is supposed to constrain every result returned to an MCP client, and related tools such as search_dql follow a fail-closed contract under a read whitelist. Root cause is CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor): the bridge tools applied the read ACL only to the primary 'items' array while still spreading their underlying plugin result objects ('...result') on the response, so sibling fields computed over the UNFILTERED data set leaked out-of-ACL information. Concretely, tasks_filter spread a 'groups' aggregate computed over all tasks, makemd_query spread unfiltered make.md row siblings, and list_templates enumerated template paths and parsed user-function bodies without consulting the read whitelist at all - a shape that is plugin-defined and not reliably path-attributable, which is why the fix refuses the call wholesale. The upstream commit 5ab2109274acf0070601fa71a62b14ddc9652309 gates these paths behind readEnumerationUnrestricted(ctx.acl), returning only the ACL-filtered items (tasks_filter, makemd_query) or throwing an aclDenied error (list_templates). Note that when no read whitelist is configured the enumeration is unrestricted and behavior is unchanged, so only deployments that use a read ACL to segregate notes are exposed.
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:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
Network-reachable MCP server but requires an authenticated caller (PR:L) and a configured read whitelist; impact is partial confidentiality inference only, so C:L and I/A:N.
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, bridge tools do not consistently apply the read access-control list (ACL) to every returned field. The tasks_filter tool exposes group counts derived from denied notes, makemd_query passes unfiltered sibling result fields through, and list_templates exposes template paths and parsed user-function bodies without a read-whitelist check. An authenticated caller can consequently infer or read data from notes outside the caller's read ACL. Version 1.3.1 fixes the vulnerability by filtering path-attributable fields and applying the read whitelist to list_templates.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
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
Read access-control bypass in obsidian-tc before version 1.3.1 allows an authenticated MCP client to read files inside a
EUVD-2026-98689
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB