Skip to main content

obsidian-tc EUVDEUVD-2026-97733

| CVE-2026-77363 HIGH
Origin Validation Error (CWE-346)
2026-10-12 GitHub_M
8.8
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Lure victim to malicious web page
  2. Delivery
    Page issues cross-origin POST to loopback /mcp
  3. Exploit
    Server skips Host/Origin validation
  4. Execution
    Obtain full wildcard vault scopes
  5. Impact
    Read and exfiltrate or tamper vault contents

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Origin validation
Exploitation Conditions

Exploitation requires the target to be running obsidian-tc (prior to 1.3.1) with the Streamable HTTP transport enabled and bound to loopback under the documented auth.mode 'none' configuration; in that mode requests receive full wildcard vault scopes. The attack further requires victim user interaction (UI:R): the user must visit an attacker-controlled web page while the server is running, so the malicious page's JavaScript can POST cross-origin to http://127.0.0.1:<port>/mcp. Limiting factors: it does NOT affect server-to-server MCP clients (which send no Origin header), it does NOT apply when auth is configured to anything other than 'none', and in 1.3.1+ the default enableDnsRebindingProtection blocks disallowed Host/Origin values. Deployments that set auth, restrict allowedHosts/allowedOrigins, or do not expose the HTTP transport to browser contexts are not exploitable.

Impact

This is a genuine, well-characterized security issue but its real-world priority is tempered by deployment footprint and preconditions rather than by signal conflict. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H = 8.8) is internally consistent with the description: a remote, unauthenticated web page (PR:N) triggers the flaw only after a victim with the vulnerable server running visits attacker-controlled content (UI:R), yielding full read/write/delete access to the Obsidian vault (C:H/I:H/A:H). CWE-346 (Origin Validation Error) and the vendor commit (THE-271) confirm the root cause: the Streamable-HTTP transport validated neither Host nor Origin and had no DNS-rebinding protection. No EPSS score, CISA KEV listing, or standalone public exploit was provided; exploitation status is therefore 'no public exploit identified at time of analysis.' Note the fix commit does include a regression test that demonstrates the cross-origin attack (a 403-expecting test POSTing Origin: http://evil.example), so a working attack recipe is effectively public even though no weaponized exploit is cited. The one notable caveat: exploitation is gated on a specific deployment mode - the documented loopback configuration with auth.mode set to 'none' - so the AC:L / PR:N rating reflects a default-but-optional configuration rather than a flaw present in every install. This is a real priority for anyone actually running obsidian-tc with the HTTP transport in that mode, but the narrow, niche product footprint limits aggregate exposure.

Exploit ScenarioDerived

A user runs obsidian-tc with the Streamable HTTP transport bound to loopback under auth.mode 'none' (the documented local default) and then browses to a malicious or compromised web page. JavaScript on that page issues a cross-origin POST to http://127.0.0.1:<port>/mcp, which the server accepts because it never checks Host or Origin, granting the page full wildcard-scope access to read, modify, and delete the victim's vault. The vendor's own fix includes a test reproducing this cross-origin drive-by, so an attack recipe is publicly available even though no packaged exploit is cited.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 12, 2026

Cross-origin requests to the obsidian-tc Model Context Protocol HTTP transport let any web page a victim visits read from and write to the entire Obsidian vault, because releases before 1.3.1 performed no Host or Origin header validation and ran with DNS-rebinding protection disabled. The issue affects deployments that run the Streamable HTTP transport bound to loopback under the documented auth.mode 'none' configuration, where inbound requests receive full wildcard vault scopes; the attacker needs remote, unauthenticated reach via the browser (PR:N) but must convince the victim to load an attacker-controlled page while the server is running (UI:R), yielding high confidentiality and integrity impact (CVSS 8.8, CWE-346). No public exploit was identified at time of analysis, and exploitation does not apply to server-to-server MCP clients (which send no Origin header), to deployments that configure any authentication mode other than 'none', or to version 1.3.1 and later, where host, origin, and DNS-rebinding validation are enabled by default.

RemediationAI

Upgrade obsidian-tc to the vendor-released patch version 1.3.1 (release tag v1.3.1, per advisory GHSA-pqh8-4pj7-32xx), which enables Host, Origin, and DNS-rebinding validation on the Streamable HTTP transport by default and returns 403 for disallowed values. If upgrading immediately is not possible, the highest-value compensating control is to stop running the HTTP transport under auth.mode 'none': configure authentication (bearer token or equivalent) so that a cross-origin browser POST without credentials cannot obtain wildcard vault scopes - the trade-off is that every MCP client must then be updated to present credentials. As a second control, avoid exposing the loopback HTTP endpoint to any browser context on the developer's machine (do not browse attacker-controlled content on the same host while the server runs, or run the server inside a container/VM whose loopback is not reachable from the host browser); this is operationally fragile since it relies on user behavior rather than a technical barrier. After upgrading, operators fronting the server with a reverse proxy or using a custom hostname MUST list those values in transports.http.allowedHosts (and any non-same-origin browser clients in allowedOrigins), otherwise legitimate requests will be rejected with 403; conversely, keep enableDnsRebindingProtection set to true and do not add wildcard or untrusted origins, since that would reintroduce the same CWE-346 condition. Deployments that already set a non-'none' auth mode should still upgrade, but are lower priority than those using the documented loopback/'none' default.

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

The affected component is the Streamable HTTP transport of obsidian-tc, an agent-ready MCP server for Obsidian vaults published by The-40-Thieves (CPE cpe:2.3:a:the-40-thieves:obsidian-tc). MCP is a JSON-RPC protocol, and the Streamable HTTP transport exposes it at endpoints such as http://127.0.0.1:<port>/mcp; the project's documented local setup binds that endpoint to loopback and permits auth.mode 'none', which grants incoming callers unrestricted wildcard scopes over the vault. The root cause is CWE-346 (Origin Validation Error): the Hono-based HTTP app in packages/server/src/transports/http.ts trusted the Host and Origin headers implicitly and shipped no DNS-rebinding guard, so a browser request originating from an arbitrary website was indistinguishable from a legitimate local client. Browsers always attach an Origin header to cross-origin fetch/POST requests, whereas server-to-server MCP clients typically send none, so the request path was effectively reachable from any JavaScript execution context on the victim's machine - the canonical drive-by attack against a loopback service, where DNS rebinding or a plain cross-origin POST bypasses the same-origin policy. The fix commit (6428bfe6fdfd43aa7b4b369be3aecd6a268fb928) adds a guard that runs before authentication in the request pipeline and returns HTTP 403 with a JSON-RPC error when the Host is neither loopback/'localhost' nor in allowedHosts, or when a present Origin is neither the request's own origin nor in allowedOrigins; the accompanying HttpConfigSchema additions (enableDnsRebindingProtection default true, allowedHosts, allowedOrigins) and the CLI wiring make this fail-closed by default, and a regression test asserts that an Origin of http://evil.example is rejected with 403 while a same-origin server-to-server call still returns 200. Note that the supplied tag set classifies the issue as information disclosure, which understates the assessed C:H/I:H impact - both vault contents and vault state 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

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

A browser drive-by reaches the no-auth loopback endpoint (AV:N/PR:N) with victim page visit (UI:R); missing origin checks make it reliable (AC:L) and grant full vault read/write/delete (C:H/I:H/A:H).

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

2
Patch available
Oct 12, 2026 - 19:03 EUVD
CVE Published
Oct 12, 2026 - 17:45 cve.org
HIGH 8.8

DescriptionCVE.org

obsidian-tc is a governed, agent-ready Model Context Protocol server for Obsidian vaults. Prior to 1.3.1, the Streamable HTTP transport does not validate the Host or Origin header or enable DNS-rebinding protection. When the documented loopback configuration uses auth.mode set to none, a malicious web page can send requests to the local MCP endpoint and receive unrestricted vault access through the http-local caller. Version 1.3.1 fixes the vulnerability by enabling host, origin, and DNS-rebinding validation.

Technical POC Analysis

CWE-346 (Origin Validation Error); the advisory also tags CWE-1385 (Missing Origin Validation in WebSockets).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

The obsidian-tc Model Context Protocol HTTP transport, used to integrate Obsidian knowledge bases, contains a high-severity vulnerability (CVE-2026-77363) that allows any website a user visits to read and modify the entire Obsidian vault when the server runs in its default unauthenticated configuration. Organizations relying on this tool for sensitive knowledge management face potential data exposure and integrity loss, though no public exploit identified at time of analysis. Leadership should prioritize assessing exposure and implementing interim mitigations, as no vendor-released patch has been identified at this time.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis; interim mitigations include enabling authentication (auth.mode other than 'none'), restricting network access to loopback only, disabling Streamable HTTP transport if unused, and upgrading to obsidian-tc 1.3.1 or later when feasible.

Threat Intelligence Overview

EPSS Score
0.2%
Top 96% exploitable
Prevalence
Low
niche open-source MCP server for Obsidian vaults, small user base
Social Media
1
Sightings
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 HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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