Skip to content
Heist/ feed
Back to feed
High

Trilium Notes: Authentication Bypass in Clipper API for Electron (Desktop) Builds

Type: advisorySources: OSV

Trilium Notes is a cross-platform, hierarchical note taking application focused on building large personal knowledge bases. In versions 0.102.1 and prior, the Clipper API in Trilium Desktop (v0.101.3) allows full authentication bypass when running in an Electron environment. When Trilium detects an Electron environment, it explicitly disables authentication middleware for the Clipper API, exposing endpoints such as /api/clipper/notes to the network with no password, API token, or CSRF protection. An attacker on a shared network (for example, a corporate LAN or public Wi-Fi) can scan for open high-range ports using a tool like nmap, since Trilium often binds to ports such as 37840. Once a candidate port is found, an unauthenticated request to the Clipper handshake endpoint, which also bypasses authentication, confirms a Trilium instance by returning the application name and protocol version. This facilitates unauthorized data access, phishing, and local system compromise. The issue has been fixed in version 0.102.2.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-39310
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 09:45 UTC · Revision 1

Source evidence

Trilium Notes: Authentication Bypass in Clipper API for Electron (Desktop) Builds

core-osv · Original source

Published 20 May 2026, 19:05 UTC

Trilium Notes is a cross-platform, hierarchical note taking application focused on building large personal knowledge bases. In versions 0.102.1 and prior, the Clipper API in Trilium Desktop (v0.101.3) allows full authentication bypass when running in an Electron environment. When Trilium detects an Electron environment, it explicitly disables authentication middleware for the Clipper API, exposing endpoints such as /api/clipper/notes to the network with no password, API token, or CSRF protection. An attacker on a shared network (for example, a corporate LAN or public Wi-Fi) can scan for open high-range ports using a tool like nmap, since Trilium often binds to ports such as 37840. Once a candidate port is found, an unauthenticated request to the Clipper handshake endpoint, which also bypasses authentication, confirms a Trilium instance by returning the application name and protocol version. This facilitates unauthorized data access, phishing, and local system compromise. The issue has been fixed in version 0.102.2.

osv:CVE-2026-39310
Complete source record
{
  "id": "0824a3f3acfbb9b244a889f83cc79895dff5c94120aba88aeb0183ce962afc5c",
  "url": "https://osv.dev/vulnerability/CVE-2026-39310",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Trilium Notes: Authentication Bypass in Clipper API for Electron (Desktop) Builds",
    "summary": "Trilium Notes is a cross-platform, hierarchical note taking application focused on building large personal knowledge bases. In versions 0.102.1 and prior, the Clipper API in Trilium Desktop (v0.101.3) allows full authentication bypass when running in an Electron environment. When Trilium detects an Electron environment, it explicitly disables authentication middleware for the Clipper API, exposing endpoints such as /api/clipper/notes to the network with no password, API token, or CSRF protection. An attacker on a shared network (for example, a corporate LAN or public Wi-Fi) can scan for open high-range ports using a tool like nmap, since Trilium often binds to ports such as 37840. Once a candidate port is found, an unauthenticated request to the Clipper handshake endpoint, which also bypasses authentication, confirms a Trilium instance by returning the application name and protocol version. This facilitates unauthorized data access, phishing, and local system compromise. The issue has been fixed in version 0.102.2.",
    "evidence": "osv:CVE-2026-39310",
    "products": [],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-39310",
      "aliases": [
        "CVE-2026-39310",
        "GHSA-jcvx-vc83-cppw"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/triliumnext/trilium",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "bf234397923e912b4f8c5b898ab79aa37f5cc286"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "0.102.2"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "bf234397923e912b4f8c5b898ab79aa37f5cc286"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v0.102.2"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v0.102.1",
            "v0.102.0",
            "web-clipper-v1.1.1",
            "web-clipper-v1.1.0",
            "v0.101.1",
            "v0.99.4",
            "v0.99.2",
            "v0.99.0",
            "v0.98.1",
            "v0.98.0",
            "v0.97.0",
            "v0.97.2",
            "v0.96.0",
            "v0.63.6",
            "v0.62.2",
            "v0.62.1-beta",
            "v0.62.0-beta",
            "v0.61.4-beta",
            "v0.61.3-beta",
            "v0.61.2-beta",
            "v0.61.1-beta",
            "v0.61.0-beta",
            "v0.59.1",
            "v0.59.0-beta",
            "v0.58.0-beta",
            "v0.57.3",
            "v0.57.2",
            "v0.57.1-beta",
            "v0.57.0-beta",
            "v0.56.1",
            "v0.56.0-beta",
            "v0.55.1",
            "v0.55.0-beta",
            "v0.54.1-beta",
            "v0.54.0-beta",
            "v0.53.2",
            "v0.53.1-beta",
            "v0.53.0-beta",
            "v0.52.2",
            "v0.52.1-beta",
            "v0.52.0-beta",
            "v0.51.2",
            "v0.51.1-beta",
            "v0.51.0-beta",
            "v0.50.1",
            "v0.50.0-beta",
            "v0.49.4",
            "v0.49.3",
            "v0.49.2-beta",
            "v0.49.1-beta",
            "v0.49.0-beta",
            "v0.48.6.1",
            "v0.48.6-docker",
            "v0.48.6",
            "v0.48.5",
            "v0.48.4",
            "v0.48.3",
            "v0.48.2",
            "v0.48.1-beta",
            "v0.48.0-beta",
            "v0.47.0-beta",
            "v0.46.3-beta",
            "v0.46.2-beta",
            "v0.46.1-beta",
            "v0.46.0-beta",
            "v0.44.4",
            "v0.44.3-beta",
            "v0.44.2-beta",
            "v0.44.1-beta",
            "v0.44.0-beta",
            "v0.42.1",
            "v0.42.0-beta",
            "v0.41.6",
            "v0.41.5",
            "v0.41.4-beta",
            "v0.41.3-beta",
            "0.41.3",
            "v0.41.2-beta",
            "v0.41.1-beta",
            "v0.41.0-beta",
            "v0.40.0-beta",
            "v0.39.3",
            "v0.39.2-beta",
            "v0.39.1-beta",
            "v0.39.0-beta",
            "v0.38.2",
            "v0.38.1-beta",
            "v0.38.0-beta",
            "v0.37.2",
            "v0.37.1-beta",
            "v0.37.0-beta",
            "v0.36.1-beta",
            "v0.36.0-beta",
            "v0.35.1",
            "v0.35.0-beta",
            "v0.34.1",
            "v0.34.0-beta",
            "v0.33.3",
            "v0.33.2-beta",
            "v0.33.1-beta",
            "v0.33.0-beta",
            "v0.32.3",
            "v0.32.2-beta",
            "v0.32.1-beta",
            "v0.32.0-beta",
            "v0.31.3",
            "v0.31.2-beta",
            "v0.31.1-beta",
            "v0.31.0-beta",
            "v0.30.3-beta",
            "v0.30.2-beta",
            "v0.30.1-beta",
            "v0.30.0-beta",
            "v0.29.1",
            "v0.29.0-beta",
            "v0.28.3",
            "v0.28.2",
            "v0.28.1-beta",
            "v0.28.0-beta",
            "v0.27.4",
            "v0.27.3",
            "v0.27.2-beta",
            "v0.27.1-beta",
            "v0.27.0-beta",
            "v0.26.1",
            "v0.26.0-beta",
            "v0.25.1-beta",
            "v0.25.0-beta",
            "v0.24.5",
            "v0.24.4-beta",
            "v0.24.3-beta",
            "v0.24.2-beta",
            "v0.24.1-beta",
            "v0.24.0-beta",
            "v0.23.0",
            "v0.22.1",
            "v0.22.0",
            "v0.21.0",
            "v0.20.2",
            "v0.20.1",
            "v0.20.0",
            "v0.19.1",
            "v0.19.0",
            "v0.18.0",
            "v0.17.0",
            "v0.16.0",
            "v0.15.0",
            "v0.14.1",
            "v0.14.0",
            "v0.13.0-beta",
            "v0.11.1",
            "v0.11.0-beta",
            "v0.10.2-beta",
            "v0.10.1-beta",
            "v0.10.0-beta",
            "v0.8.1",
            "v0.8.0-beta",
            "v0.7.0-beta",
            "v0.6.1",
            "v0.6.0-beta",
            "v0.5.5-beta",
            "v0.5.4-beta",
            "v0.5.3-beta",
            "v0.5.2-beta",
            "v0.5.1-beta",
            "v0.5.0-beta",
            "v0.4.1",
            "v0.4.0-beta",
            "v0.3.2",
            "v0.3.1",
            "v0.3.0",
            "v0.2.2",
            "v0.2.1",
            "v0.2.0",
            "v0.1.2",
            "v0.1.1",
            "v0.1.0",
            "v0.0.11",
            "v0.0.10",
            "v0.0.9"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-39310.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:27.671282634Z",
      "provider": "osv",
      "references": [
        "https://github.com/TriliumNext/Trilium/releases/tag/v0.102.2",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/39xxx/CVE-2026-39310.json",
        "https://github.com/TriliumNext/Trilium/security/advisories/GHSA-jcvx-vc83-cppw",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-39310"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-284",
          "CWE-306"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/39xxx/CVE-2026-39310.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-39310",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 494305,
  "published_at": "2026-05-20T19:05:41.692+00:00"
}