Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessDeliver malicious note to victim vault
-
DeliveryCraft MathJax \href with TAB in scheme
-
ExploitfilterURL emits empty protocol, bypasses safeProtocols
-
ExecutionRenders as javascript: anchor in Live Preview
-
PersistVictim clicks link in Node-enabled renderer
-
ImpactExecute OS commands as desktop user
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires a vulnerable Obsidian Desktop build (per description, before 1.14.0) with its default Node-integration-enabled renderer, and the victim must open an attacker-controlled note in Live Preview mode and then actively click the rendered malicious anchor. The payload specifically depends on the bundled MathJax 3.2.2 Safe component's filterURL mishandling a TAB byte in the \href URL scheme to emit an empty protocol that evades the configured safeProtocols allowlist. Limiting factors that reduce real-world risk: the attacker cannot execute code without the victim's click (UI:A), the malicious note must first be delivered into or opened within the victim's vault (local vector, typically via a shared/synced/downloaded vault or social engineering), and users on patched versions or with Node integration disabled are not exploitable. |
| Impact | This is a genuine but conditionally-gated code-execution flaw rather than a drive-by remote compromise. The vendor-supplied CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:A) is internally consistent with the description: exploitation is unauthenticated (PR:N) but requires the victim to open an attacker-supplied note AND actively click a rendered link (UI:A), and the attack vector is Local (AV:L) because the malicious payload must already be present in the victim's vault/note rather than delivered over a live network protocol. Impact is high across confidentiality, integrity and availability (VC:H/VI:H/VA:H) because successful exploitation yields arbitrary OS command execution as the desktop user via Node integration - the practical ceiling of a non-privilege-escalation client compromise. No EPSS score, KEV listing, or public POC was provided in the intelligence, so there is no public exploit identified at time of analysis and no evidence of active exploitation; the 8.4 score is driven by impact severity, not by observed in-the-wild activity. Net: a real patch-worthy priority for Obsidian Desktop users who open shared/untrusted vaults, but the mandatory user-interaction and local-note prerequisites make mass, unattended exploitation unlikely. Note a version discrepancy in the source data - the description states 'before 1.14.0' while the only reference is the 1.14.4 changelog - which should be verified against the vendor before asserting a definitive fixed version. |
| Exploit ScenarioDerived | An attacker shares or plants a Markdown note (e.g., in a synced/shared vault, a downloaded community vault, or a repo) containing a crafted MathJax \href whose URL scheme includes a TAB byte, causing filterURL to emit an empty protocol that bypasses safeProtocols and renders as a javascript: anchor. When the victim views the note in Live Preview and clicks the link, the javascript: URL executes in the Node-integration-enabled renderer and calls require('child_process') to run arbitrary OS commands as the desktop user. No public exploit code was identified at time of analysis, and success depends on the victim both opening the note and clicking the link. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 08, 2026
Arbitrary operating-system command execution on Obsidian Desktop builds prior to 1.14.0 is possible when a victim opens an attacker-supplied note in Live Preview and clicks a malicious MathJax-rendered anchor. The flaw lives in the bundled MathJax 3.2.2 Safe component, whose filterURL mishandles a TAB byte embedded in a \href URL scheme, yielding an empty protocol that slips past the configured safeProtocols allowlist and renders a javascript: link; clicking it executes in the Node-integration-enabled renderer through require('child_process'), running commands as the desktop user. Exploitation is conditionally gated rather than a drive-by remote compromise: the attacker cannot act without the victim's click (UI:A / UI:R), the hostile note must first be delivered into the victim's vault (typically via a shared, synced, or downloaded vault or social engineering), and patched users or those with Node integration disabled are not affected; confirmed actively exploited status is not established - no public exploit identified at time of analysis - and the vendor patch is referenced in the desktop v1.14.4 changelog.
RemediationAI
Upgrade Obsidian Desktop to a vendor-patched release - the input records patch availability from the vendor with the changelog reference https://obsidian.md/changelog/2026-10-05-desktop-v1.14.4/ (desktop v1.14.4), which supersedes the vulnerable pre-1.14.0 range described in the advisory; administrators and users should move to at least that release so the bundled MathJax Safe filterURL handling of TAB bytes in \href schemes is corrected. Until upgrading, the most effective compensating control is disabling Node integration / enabling the restricted or safe mode for the renderer, which removes the require('child_process') bridge the payload depends on and downgrades the issue from command execution to a contained script-rendering bug - with the trade-off that plugins and workflows relying on Node APIs will stop functioning. Additional hardening: avoid opening notes, vaults, or synced content from untrusted sources (the delivery precondition for this local-vector flaw), exercise caution with Live Preview while reviewing untrusted Markdown, and consider disabling or restricting third-party vault sync so malicious notes cannot be injected automatically. Because exploitation requires a user click on the rendered anchor and a locally present malicious note, endpoint-level controls that block or sandbox Obsidian's ability to spawn child processes (for example, application allowlisting or EDR rules on process creation from the Obsidian binary) provide meaningful defense in depth for environments that cannot patch immediately, though they may break legitimate plugin functionality.
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
The vulnerability class is CWE-79 (improper neutralization of input during web page generation, i.e., cross-site scripting) manifesting inside Obsidian's Markdown rendering pipeline, specifically the bundled MathJax 3.2.2 Safe extension. MathJax Safe enforces a safeProtocols allowlist by passing candidate URLs through filterURL; when a crafted \href value places a TAB byte in the URL scheme, the parser produces an empty protocol string, which is treated as allowed and consequently emits an anchor whose effective scheme resolves to javascript:. Obsidian Desktop is an Electron application, and its renderer is configured with Node integration enabled by default, so script executing in the renderer context is not sandboxed from the host: the payload can invoke require('child_process') and spawn operating-system commands with the privileges of the logged-in desktop user. The affected product is captured by the CPE cpe:2.3:a:obsidian:obsidian_desktop:*:*:*:*:*:*:*:*, i.e., the Obsidian Desktop application across the unpatched version range described as before 1.14.0; the flaw is not in a standalone MathJax deployment but in the copy shipped with Obsidian, so remediation follows Obsidian's release cadence rather than an upstream MathJax update. The provided CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N) and the independent assessment (CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H) both agree on a local attack vector, no privileges required, high confidentiality, integrity, and availability impact confined to the user's own environment (subsequent-system metrics are None), which matches the requirement that the victim open a malicious note and actively click the rendered link.
Know when Obsidian 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
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Malicious note is local content (AV:L) and victim must click the rendered link (UI:R); no auth needed (PR:N); Node-integration RCE as desktop user yields full C/I/A impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Obsidian Desktop before 1.14.0 contains a filter bypass vulnerability in the bundled MathJax 3.2.2 Safe component that allows attackers to execute arbitrary code by embedding a crafted \href value with a TAB byte in the URL scheme, causing filterURL to produce an empty protocol that bypasses the configured safeProtocols restrictions. Attackers can craft a note containing a malicious MathJax formula that renders as a javascript: URL anchor, which when clicked by the victim in Live Preview executes in the Node-integration-enabled vault renderer via require('child_process'), achieving arbitrary operating system command execution as the desktop user.
Executive ViewAI
Obsidian Desktop installations running versions earlier than 1.14.0 are exposed to a code-execution flaw in which an attacker-supplied note can run arbitrary operating-system commands under the logged-in employee's account after the victim clicks a crafted link while viewing the note in Live Preview. Because Obsidian is widely deployed on knowledge-worker endpoints and commonly points at synced, shared, or downloaded vaults, a successful attack yields the attacker the same access as the employee - including local credentials, business documents, and any connected network or cloud resources. Exploitation requires the hostile note to be delivered into the vault and the victim to click, so risk is concentrated in teams that routinely open vault content from external sources.
Apply vendor patch.
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
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Obsidian 0.14.x and 0.15.x before 0.15.5 allows obsidian://hook-get-address remote code execution because window.open is
Unauthenticated OAuth handling in Obsidian Web MCP (obsidian-web-mcp) prior to 0.2.0 lets any remote caller who can reac
Obsidian Dataview through 0.4.12-hotfix1 allows eval injection. Rated high severity (CVSS 7.8), this vulnerability is no
An issue discovered in Obsidian Canvas 1.1.9 allows remote attackers to send desktop notifications, record user audio an
Improper path handling in Obsidian desktop before 1.2.8 on Windows, Linux and macOS allows a crafted webpage to access l
Plesk Obsidian allows a CSRF attack, e.g., via the /api/v2/cli/commands REST API to change an Admin password. Rated medi
A Host Header Injection issue on the Login page of Plesk Obsidian through 18.0.49 allows attackers to redirect users to
The feature to preview a website in Plesk Obsidian 18.0.0 through 18.0.32 on Linux is vulnerable to reflected XSS via th
Obsidian before 0.12.12 does not require user confirmation for non-http/https URLs. Rated critical severity (CVSS 9.8),
Arbitrary code execution in Obsidian Desktop builds prior to 1.14.0 is possible when a user opens an attacker-supplied M
Obsidian before 1.2.2 allows calls to unintended APIs (for microphone access, camera access, and desktop notification) v
A GET-based XSS reflected vulnerability in Plesk Obsidian 18.0.17 allows remote unauthenticated users to inject arbitrar
EUVD-2026-95101
GHSA-4pcg-gm3h-3m4r
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB