ZeroHour

CVE-2026-48996

niche

Stored XSS-to-RCE in Trilium via unsanitized note titles in Safe import

CVSS 4.0
9.3 critical
EPSS
<1%p12
Published
()
Modified
AI analysis

Trilium's default-on 'Safe import' filter neutralizes embedded scripts but does not sanitize or escape note titles, and the GeoMap note view interpolates a marker note's title into raw HTML that is rendered via innerHTML, so an attacker-supplied import archive can carry a note whose title contains an HTML event-handler payload that survives import. The payload executes when the victim opens the GeoMap that renders the compromised marker, constituting stored cross-site scripting (CWE-79). On Trilium's desktop client the Electron renderer runs with Node integration enabled, so the injected JavaScript escalates to full remote code execution on the victim's machine (CWE-94), and CVSS 4.0 rates the issue critical at 9.3. All Trilium deployments running version 0.103.0 or earlier are affected, on both desktop and server clients. No public proof-of-concept is known, exploitation has not been observed in the wild or added to CISA KEV, and EPSS puts 30-day exploitation probability at 0.2%.

What to do: Upgrade to Trilium 0.104.0, which fixes the issue; this applies to both desktop and server deployments. Until upgraded, do not import archives from untrusted sources and avoid opening GeoMap notes whose markers originate from imported data, and review imported note titles for embedded HTML or event-handler payloads. Defenders can check whether imported notes with HTML-bearing titles exist in affected instances to identify potential past compromise.

Affected
Trilium (open-source project) Trilium hierarchical note-taking application (desktop and server editions)all versions up to and including 0.103.0 (fixed in 0.104.0)
Estimated exposure
nicheroughly tens of thousands of self-hosted instances/users at most (niche open-source project) — Estimated from Trilium's profile as a niche, self-hosted open-source note-taking application with a community-scale rather than mass-market install base; the provided data contains no install counts or internet-exposure scan figures, so…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

Trilium is an open-source hierarchical note-taking application. In versions up to and including 0.103.0, the default-on "Safe import" filter does not sanitize note titles, and the GeoMap note view interpolates a marker note's title into raw HTML that is rendered as innerHTML, allowing an attacker-supplied import archive to inject script that runs when the map is displayed. Because Safe import neutralizes scripts but never escapes titles, a note whose title contains an HTML event-handler payload survives the import and executes as soon as the victim opens the GeoMap that renders its marker. 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.

Weakness
CWE-79, CWE-94
Vector
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X

In the news

No ingested article mentions this CVE yet.