Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft mindMap note with dangerouslySetInnerHTML payload
-
DeliveryDeliver import archive to victim
-
ExploitVictim imports, Safe Import skips mindMap
-
ExecutionVictim opens map, innerHTML injection
-
PersistScript runs via Node integration
-
ImpactArbitrary code execution on desktop
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 the victim to import an attacker-supplied note archive and then open the malicious mindMap note - user interaction is mandatory (UI:A) and the vector is local file delivery (AV:L), not remote unauthenticated network access. The specific prerequisite is a note of type mindMap carrying a dangerouslySetInnerHTML property in its JSON, which the default-on Safe Import filter does not sanitize (it sanitizes only type === "text" notes) in versions up to and including 0.103.0. Escalation from XSS to full remote code execution is limited to the desktop Electron client, where Node integration is enabled in the renderer; on the server/web client the impact is confined to stored XSS. Limiting factors: the attacker cannot trigger this without the victim actively importing the file and opening the map, and patched builds (0.104.0+) neutralize the payload. |
| Impact | The vendor CVSS 4.0 score of 9.3 (Critical) reflects high confidentiality, integrity, and availability impact with a scope change, but the vector's realistic gating factors matter: AV:L and UI:A mean the attacker cannot reach a victim over the network unprompted - the malicious archive must be delivered and the victim must actively import it and then open the specific mind map note. There is no CISA KEV listing and no public proof-of-concept beyond the vendor's own regression test, so this is not evidence of active or widespread exploitation; the signal is a confirmed, high-impact bug rather than an observed campaign. That said, the RCE-on-open behavior on desktop, the near-zero complexity once the file is opened, and the social-engineering ease of "here's a note pack to import" make patching genuinely urgent for anyone running the Electron desktop client. Any operator or self-hosting team that lets users exchange import archives should treat this as high priority and upgrade promptly rather than relying on user caution. |
| Exploit ScenarioDerived | An attacker crafts a Trilium export/import archive containing a mindMap note whose JSON includes a dangerouslySetInnerHTML value such as an img tag with an onerror handler calling require('child_process').exec. They send it to a victim as a shared "note pack," and because Safe Import skips mindMap notes the payload is stored intact; the moment the victim opens that mind map, Mind Elixir writes the markup to innerHTML and, on the Electron desktop client, the script runs with Node privileges to execute arbitrary commands. No public exploit is identified, but the vendor's regression test demonstrates exactly this vector. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 27, 2026
Stored cross-site scripting escalating to remote code execution affects TriliumNext Trilium through version 0.103.0, where the default-on "Safe import" filter sanitizes HTML only for text notes and skips the mindMap note type entirely. An attacker who gets a victim to import a crafted note archive can embed a dangerouslySetInnerHTML payload in the mind map's unsanitized JSON, which Mind Elixir assigns directly to a node's innerHTML when the map is opened; on the Electron desktop client, Node integration turns that XSS into full RCE. No public exploit has been identified at time of analysis, and it is not listed in CISA KEV; the issue is fixed in version 0.104.0.
RemediationAI
Vendor-released patch: upgrade to Trilium 0.104.0, which adds sanitizeMindMapData to recursively run every dangerouslySetInnerHTML value through the same DOMPurify sanitizer used for text notes before rendering (see GHSA-rj57-j38v-3577 and commit 15da3ff626c21fbadbc980ebb39e2f97085503a4). Until you can upgrade, do not import note archives from untrusted or unverified sources, since Safe Import does not protect mindMap notes in affected versions, and avoid opening mind map notes originating from imported third-party archives. On the desktop client the impact is worst because the Electron renderer runs with Node integration; if you must run an unpatched build, treating all imports as untrusted and preferring the web/server client (where the impact is limited to XSS rather than RCE) reduces blast radius, at the cost of desktop convenience. These are stopgaps only - the upgrade is the real fix.
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
Trilium is a hierarchical note-taking application; mind map notes are rendered client-side by the Mind Elixir library. Per the vendor's own fix commit (15da3ff), Mind Elixir nodes support an undocumented dangerouslySetInnerHTML property that the library writes straight to element.innerHTML via its utils/dom.ts helper. The root cause is CWE-79 (improper neutralization of input during web page generation): Trilium's Safe Import routine only runs the DOMPurify sanitizer against notes where type === "text", so mindMap JSON content is persisted verbatim. The affected package is cpe:2.3:a:triliumnext:trilium. The additional severity comes from Trilium's desktop build being an Electron app with Node integration enabled in the renderer, meaning injected script can reach Node APIs such as require('child_process') - the exact vector the added regression test exercises with an onerror="require('child_process').exec('calc')" payload.
Know when Trilium 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:H/SI:H/SA:H
Local archive delivery (AV:L) with mandatory victim import-and-open (UI:R), no auth (PR:N); renderer-to-Node escalation crosses a trust boundary (S:C) yielding full C/I/A impact via RCE on desktop.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Trilium is an open-source hierarchical note-taking application. In versions up to and including 0.103.0, the default-on "Safe import" filter sanitizes HTML only for text notes and excludes the mindMap note type, whose JSON content is stored without sanitization, allowing an attacker-supplied import archive to embed a payload that renders as arbitrary HTML. A mind map node can carry a dangerouslySetInnerHTML property that the Mind Elixir library assigns directly to a node's innerHTML, so a malicious note survives Safe import and executes script as soon as the victim opens the imported mind map. On the desktop client the Electron renderer runs with Node integration enabled, so the injected JavaScript escalates from cross-site scripting to full remote code execution on the victim's machine. This issue is fixed in version 0.104.0.
Executive ViewAI
TriliumNext Trilium versions through 0.103.0 contain a critical vulnerability allowing arbitrary code execution on desktop systems when users import untrusted note archives. Attackers can bypass the import sanitization filter through the mind map note type, injecting malicious payloads that execute with full user privileges on Windows, macOS, and Linux endpoints, risking data theft and network compromise.
Apply vendor patch: upgrade to TriliumNext Trilium version 0.104.0.
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.
Trilium Notes is an open-source, cross-platform hierarchical note taking application with focus on building large person
Cross-site Scripting (XSS) - Reflected in GitHub repository zadam/trilium prior to 0.52.4, 0.53.1-beta. Rated medium sev
Cross-site Scripting (XSS) - Stored in GitHub repository zadam/trilium prior to 0.59.4. Rated medium severity (CVSS 5.4)
Cross-site Scripting (XSS) - Stored in GitHub repository zadam/trilium prior to 0.53.3. Rated medium severity (CVSS 5.4)
Stored cross-site scripting escalating to remote code execution affects TriliumNext Trilium versions up to and including
Stored cross-site scripting escalating to remote code execution affects TriliumNext Trilium through version 0.103.0, whe
Remote code execution in TriliumNext Trilium Notes desktop client prior to 0.102.2 allows attackers to achieve arbitrary
Remote code execution in Trilium versions prior to 0.104.0 is achievable by exploiting a bypass in the application's Saf
Authentication bypass in Trilium Notes Desktop (Electron build) versions 0.102.1 and earlier allows remote unauthenticat
Arbitrary local file disclosure and denial-of-service exist in Trilium's automatic image-download feature, affecting all
Unauthenticated content exfiltration in Trilium up to 0.103.0 is possible through the public share-search endpoint, whic
Stored XSS-to-RCE chain in Trilium Notes versions 0.102.1 and prior allows a network attacker to execute arbitrary Node.
EUVD-2026-67223
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB