Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconCraft archive with malicious 'book' note
-
DeliveryDeliver as shared template or backup
-
ExploitVictim imports with Safe import on
-
InstallBook payload bypasses sanitizer and is stored
-
C2Victim opens note, grid card renders via jQuery html()
-
ExecuteScript runs in Electron renderer
-
Impactrequire('child_process').exec() yields RCE
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 that the victim (1) runs a vulnerable Trilium build (<= 0.103.0), (2) imports an attacker-supplied note archive containing a note of type 'book' with a malicious text/html body - the book note type is the exact feature that bypasses the Safe import sanitizer - and (3) opens the containing note so the book note renders as a grid/list-view preview card, which invokes the jQuery .html() sink. Safe import being enabled (the default) does NOT prevent this for book notes. Limiting factors: mandatory user interaction (importing plus opening the note), reliance on social engineering to deliver the archive, and escalation to full RCE specifically requiring the desktop Electron client with Node integration enabled - on the browser/server client impact is confined to XSS within the app's web context. |
| Impact | The vendor CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H, 9.3 Critical) reflects a local attack vector gated by active user interaction (the victim must import a crafted archive and open the note) but with maximal confidentiality/integrity/availability impact on both the vulnerable and subsequent system - consistent with XSS-to-RCE via Node integration. Real-world risk hinges on social engineering: an attacker must convince a victim to import a malicious note archive, which limits mass exploitation but is plausible in note-sharing/template workflows. There is no CISA KEV listing and no EPSS score was supplied, so there is no evidence of active or widespread exploitation; this is a high-impact but interaction-dependent issue rather than a wormable network flaw. SSVC-style read: exploitation is not automatable (requires user action) while technical impact is total. Treat as a high priority for desktop users who import third-party content. |
| Exploit ScenarioDerived | An attacker crafts a Trilium export archive containing a note declared as type 'book' whose HTML body includes an event-handler payload such as <img src=x onerror="require('child_process').exec('calc')">, then shares it as a helpful template or backup. The victim imports it with default Safe import enabled and opens the containing note; the book note renders as a grid-view preview card, the payload fires via jQuery .html(), and on the desktop client the Node-enabled renderer executes arbitrary OS commands. The fix commit's regression test embeds exactly this payload, but no independent weaponized POC has been published. |
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 versions up to and including 0.103.0, where the default-on "Safe import" filter sanitizes HTML for text notes but omits the 'book' note type. Because book-note content is rendered through the same HTML path as text notes and injected via jQuery's html() in grid-view preview cards, an attacker-supplied import archive can smuggle an executable payload past sanitization; on the Electron desktop client with Node integration enabled this becomes full RCE. No public exploit identified at time of analysis, though the upstream fix commit ships a proof-style test payload, and it is not listed in CISA KEV.
RemediationAI
Vendor-released patch: upgrade to Trilium 0.104.0, which extends Safe-import HTML sanitization to cover the 'book' note type in addition to 'text' (see GHSA-h7w4-cjfg-cvj8 and commit abb01f09b3ad7792bd3d42a973730c99a062a808). Until patched, do not import note archives from untrusted or unverified sources, since Safe import does not protect against this vector for book notes - the trade-off is losing the ability to ingest third-party content and templates. Prefer the web/server client over the desktop Electron client for handling untrusted imports to avoid the Node-integration RCE escalation, accepting that stored XSS in the browser context can still occur. Advisory URL: https://github.com/TriliumNext/Trilium/security/advisories/GHSA-h7w4-cjfg-cvj8.
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 root cause is CWE-79 (improper neutralization of input during web page generation). Trilium's importer (packages/trilium-core/src/services/import/zip.ts) applied Safe-import HTML sanitization only when the note type equaled "text", leaving "book" notes stored verbatim. The content_renderer routes book notes through the same renderText() path as text notes and injects the result with jQuery .html() when rendering a grid/list preview card, so unsanitized markup becomes live DOM. In the desktop build Trilium runs as an Electron renderer with Node integration enabled, so injected event-handler/script JavaScript can reach Node APIs such as require('child_process').exec(), turning DOM-based XSS into arbitrary OS command execution. The single affected package is cpe:2.3:a:triliumnext:trilium.
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
Payload delivered via imported file (AV:L) requiring victim import-and-open (UI:R); no app privileges needed (PR:N); XSS escapes to the OS through Node integration (S:C) with full C/I/A impact.
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 book note type, whose content is stored without sanitization and later rendered as HTML, allowing an attacker-supplied import archive to embed a payload that executes as script. A book note's content is routed through the same rendering path as text notes and injected into the page with jQuery's html method when the note is shown as a grid-view preview card, so a malicious note survives Safe import and runs as soon as the victim opens the containing note. 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 up to 0.103.0 contain a stored cross-site scripting vulnerability that escalates to remote code execution on the Electron desktop client; no public exploit has been identified at time of analysis. Attackers can execute arbitrary code through malicious import archives if the target system has Node integration enabled, creating complete system compromise risk. Organizations using Trilium for notes management should prioritize immediate mitigation while monitoring for active exploitation attempts.
No vendor-released patch identified at time of analysis. Interim mitigations: disable Node integration in Electron configuration; restrict import functionality to trusted administrators only; establish monitoring for suspicious file system and process activity following import operations; run Trilium in a containerized or sandboxed environment with limited host access; require manual review before processing any import archives; maintain offline backups of critical note data to prevent loss from potential system compromise.
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 through version 0.103.0, whe
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-67224
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB