Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft malicious Markdown note with data-background-iframe
-
DeliveryDeliver note to victim vault
-
ExploitVictim opens and starts Slides presentation
-
ExecutionPayload bypasses DOMPurify, reaches parent.require
-
ImpactExecute arbitrary commands as Obsidian 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 | Exploitation requires all of the following: the target runs an unpatched Obsidian Desktop build with the Slides core plugin available; the attacker delivers a Markdown note containing a data-background-iframe attribute whose value bypasses DOMPurify; and the victim both opens that note and explicitly starts it as a presentation, at which point Reveal.js promotes the value to an iframe src with no URL-scheme restriction. The underlying enabler is Obsidian's Electron configuration - Node integration enabled with context isolation disabled - which lets a javascript: payload reach parent.require and Node APIs. Limiting factors that reduce real-world risk: mandatory user interaction (opening the file plus manually launching the presentation), local file-based delivery rather than remote push, and dependence on a pre-fix (pre-1.14.x) build; updating removes the exposure. |
| Impact | This is a genuine high-priority issue despite relying on user interaction. The CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:P) scores 8.5 and the technical impact is full compromise (VC:H/VI:H/VA:H) because the flaw chains an XSS-class sanitization bypass (CWE-79) into arbitrary OS command execution in a Node-integrated, context-isolation-disabled Electron renderer. The decisive limiter is UI:P (passive/required user interaction): the victim must open the attacker's note AND actively start it as a presentation, and AV:L reflects that the payload arrives as a local file rather than over the network, so this is a social-engineering / malicious-file delivery problem rather than a wormable remote exploit. No EPSS score, CISA KEV listing, or public POC is present in the provided data, so there is no evidence of active or at-scale exploitation; the signals point to targeted, victim-triggered abuse. One data conflict to verify: the description states the fix is 'before 1.14.0' while the only reference is the vendor changelog for Desktop v1.14.4 - confirm the exact patched build with Obsidian. Only a CVSS 4.0 vector was supplied (no 3.1), and the reporter is VulnCheck. |
| Exploit ScenarioDerived | An attacker shares a seemingly benign Markdown note (e.g., via a synced vault, shared folder, email, or community resource) that embeds a data-background-iframe attribute surviving DOMPurify. When the victim opens the note in Obsidian Desktop and starts it as a presentation with the Slides core plugin, Reveal.js promotes the attacker-controlled value into an iframe src without scheme restrictions, firing a javascript: payload that calls parent.require to reach Node.js APIs and run commands as the Obsidian user. No public exploit code was identified at time of analysis, but the technique is fully described. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv2 – Oct 08, 2026
Arbitrary code execution in Obsidian Desktop builds prior to 1.14.0 is possible when a user opens an attacker-supplied Markdown note and manually starts it as a presentation: a crafted data-background-iframe attribute survives DOMPurify sanitization in the bundled Slides core plugin, and Reveal.js then promotes that value into an iframe src without URL-scheme validation, allowing a javascript: payload to reach Node.js APIs through parent.require in Obsidian's Node-integrated, context-isolation-disabled renderer. The attacker is unauthenticated per the assessed vectors (PR:N) but exploitation is entirely local and user-driven, requiring file-based delivery plus two deliberate user actions (opening the note and launching the presentation), which is why the assessed CVSS 3.1 score is 8.5 with S:C. No public exploit code has been identified at time of analysis and the issue is not in CISA KEV; the vendor has published a patched release, so exposure is eliminated by updating.
Earlier versions of this analysis (1)
Arbitrary command execution as the Obsidian user is possible on default Obsidian Desktop installations before 1.14.0 when a victim opens a crafted Markdown note and actively launches it as a presentation via the built-in Slides core plugin. The note carries a data-background-iframe attribute that survives DOMPurify sanitization; Reveal.js then promotes that attacker-controlled value to an iframe src without URL-scheme restrictions, executing a javascript: payload that reaches Node.js APIs through parent.require in Obsidian's Node-integrated, context-isolation-disabled Electron renderer. Exploitation is gated by a multi-step, active user interaction (open the note, start the presentation), no public exploit code has been identified at time of analysis, and there is no CISA KEV listing; the local attack vector and interaction requirement keep this below a mass-exploitation emergency despite the high confidentiality, integrity, and availability impact on the victim's machine.
RemediationAI
Upgrade Obsidian Desktop to the patched release line - the vendor's patch reference is the 1.14.4 changelog at https://obsidian.md/changelog/2026-10-05-desktop-v1.14.4/, which supersedes all builds before 1.14.0 - and confirm the About screen reports 1.14.4 or later; the update removes the exposure entirely and requires no other configuration change. Where immediate updating is not possible, the highest-value compensating control is to disable the Slides core plugin (Settings > Community plugins / Core plugins) or to remove the presentation entry points so no untrusted Markdown can reach Reveal.js; the trade-off is loss of the built-in presentation feature and any vault workflow that depends on it. Additional containment: treat third-party or downloaded .md files as untrusted and do not open them as presentations, and avoid loading vaults from shared or synced locations you do not control, though these are behavioral controls that depend on user discipline and can be bypassed by a convincing lure. Restricting Obsidian's ability to run with Node integration disabled / context isolation enabled would address the underlying escalation path, but that is not a supported user-configurable toggle in affected builds and cannot be relied on as a mitigation; sanitization-only workarounds are ineffective because the bypass specifically defeats DOMPurify. No vendor-released patch is needed beyond the 1.14.4 update, and no other vendor advisory was provided in the source data.
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 flaw is classified as CWE-79 (improper neutralization of input during web page generation, i.e. cross-site scripting) and lives in the Slides core plugin that ships with Obsidian Desktop, which renders Markdown notes as Reveal.js presentations. Reveal.js supports a data-background-iframe attribute that is intended to embed background content; hardening code in the Slides plugin relies on DOMPurify to strip dangerous markup and URL schemes from the note source, but the crafted attribute survives sanitization, so the attacker-controlled string is handed to Reveal.js as the iframe's src with no scheme validation. Because a javascript: iframe URL executes in Obsidian's renderer context and that renderer is an Electron window configured with Node integration enabled and context isolation disabled, the injected script can call parent.require and obtain Node.js APIs, escalating a classic DOM-based XSS into native command execution as the Obsidian user account. The CPE cpe:2.3:a:obsidian:obsidian_desktop:*:*:*:*:*:*:*:* confirms all Obsidian Desktop builds below the 1.14.x fix line are in scope; the defense-in-depth failure is architectural (the Electron renderer's trust model) as much as it is the individual sanitization bypass.
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:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
AV:L because exploitation is via a locally opened malicious note and UI:R because the victim must open it and launch the presentation; S:C as the renderer-context XSS escapes to OS-level code execution with full C/I/A impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
Obsidian Desktop before 1.14.0 contains an arbitrary code execution vulnerability in the Slides core plugin that allows attackers to craft a malicious Markdown note containing a data-background-iframe attribute that survives DOMPurify sanitization. When the victim opens the note and starts it as a presentation, Reveal.js promotes the attacker-controlled value to an iframe src without URL-scheme restrictions, executing a javascript: payload that reaches Node.js APIs via parent.require in the Node-integrated, context-isolation-disabled renderer to achieve arbitrary command execution as the Obsidian user.
Executive ViewAI
Obsidian Desktop versions prior to 1.14.0 contain a high-severity arbitrary code execution vulnerability that can be triggered when a user opens a malicious Markdown note and manually starts a presentation. While the vulnerability is unauthenticated and no public exploit identified at time of analysis, exploitation requires local file delivery and two deliberate user actions, but a successful attack could compromise user endpoints and lead to data loss or unauthorized access. A vendor-released patch: 1.14.0 is available, and immediate updating is recommended to eliminate exposure.
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 operating-system command execution on Obsidian Desktop builds prior to 1.14.0 is possible when a victim opens
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-95100
GHSA-fj5r-pww3-qc5p
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB