CVE intelligence and bounded remediation

CVE-2026-39311 — Trilium Notes is a cross-platform, hierarchical note taking application focused on building large personal knowledge bases

Medium CVSS 6.8

Trilium Notes is a cross-platform, hierarchical note taking application focused on building large personal knowledge bases. Versions 0.102.1 and prior contain a critical security flaw where lack of SVG sanitization combined with a disabled Content Security Policy (CSP) and a publicly reachable backend execution API results in an unauthenticated Remote Code Execution (RCE). The vulnerability arises from an insecure-by-design architecture: Trilium serves SVG attachments with the image/svg+xml MIME type without any sanitization, and it explicitly disables Helmet's Content Security Policy middleware, removing the primary defense against script execution in served assets. Because the malicious SVG runs under the Same-Origin Policy, it can issue a fetch('/') to extract the csrfToken from the document body. With that token, it can send a signed request to /api/script/exec to execute arbitrary Node.js code on the server. An attacker can compromise the entire server instance simply by tricking an authenticated user into viewing a shared SVG attachment. The issue has been fixed in version 0.102.2.

Severity
Medium
CVSS
6.8 (3.1)
Published
2026-05-20
CISA KEV
Not currently listed
Ecosystem
javascript/npm
Weaknesses
CWE-79, CWE-94

Affected products

No browser-safe affected-product rows are available.

Matched remediation archetype

Command, code, expression, and template injection

This catalog composition supplies bounded fallback guidance. Explicitly reviewed curated workflows load with the complete record below.

Check exposure

  • Trace untrusted values to process execution, interpreters, evaluators, template engines, dynamic imports, and administrative scripting features.
  • Determine whether the affected path is reachable across each trust boundary and which service account or host privilege it inherits.
  • Review configuration for optional execution features, unsafe compatibility modes, and shell invocation.

Remediate safely

  • Replace string-built commands or evaluated code with fixed operations and structured argument APIs that do not invoke a shell.
  • Use strict allowlists for operation identifiers and reject unexpected input before it reaches any interpreter.
  • Update the affected component and add inert regression tests covering metacharacters, encoding variants, and alternate request paths.

Authoritative sources

Complete CVE record and remediation plan

The detailed catalog view below loads this exact record, its source evidence, and the full seven-phase agentic change plan.