Trilium vulnerabilities
6 known CVE vulnerabilities in Trilium, translated and rated.
- CVE-2026-53579Critical
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.
- CVE-2026-53578Critical
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.
- CVE-2026-48996Critical
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.
- CVE-2026-77438High
Trilium is an open-source hierarchical note-taking application. In versions up to and including 0.103.0, the public share-search endpoint does not enforce per-note shareCredentials and shareHiddenFromTree controls, allowing an unauthenticated visitor to read titles, tree paths, and content of protected shared notes. The endpoint authorizes only the ancestor note and then runs a full-text search across the entire published subtree without re-checking individual note permissions.
- CVE-2026-53580High
Trilium, prior to version 0.104.0, has a vulnerability in the automatic image-download feature. It accepts file:// URLs in img tags and reads the referenced local file with no path validation, allowing any authenticated user to disclose arbitrary files readable by the Trilium process. Additionally, pointing at an unbounded source like /dev/zero causes uncontrolled memory allocation and crashes the server. Fixed in version 0.104.0.
- CVE-2026-47727High
Trilium, prior to version 0.104.0, has a vulnerability in the default-on "Safe import" filter. The filter fails to neutralize the shareTemplate relation because it is not marked as dangerous, allowing an attacker-supplied import archive to plant a server-side template leading to remote code execution. When the victim publishes the imported note, the public share renderer feeds the linked EJS code note's raw bytes into ejs.render, which compiles them in the server's Node process. Fixed in version 0.104.0.

