Description
Joplin is an open source note-taking and to-do application that organises notes and lists into notebooks. Prior to 3.7.2, isAcceptedUrl() in packages/renderer/htmlUtils.ts uses an unanchored regular expression for internal resource URLs, allowing a javascript: URL containing a matching 32-character path fragment to pass validation and be emitted into an HTML note's link. A low-privileged Joplin Server user can publish the crafted HTML note as a public share. In the current build, ordinary left-click is blocked; demonstrated execution requires middle-click or Open in new tab in an older or non-hardened browser because current Chrome and Firefox block javascript: new-tab navigation. When execution succeeds, the script runs in the Joplin Server origin, can read page-visible content, and can make authenticated same-origin requests when the victim is signed in. This issue is fixed in version 3.7.2.
Published: 2026-09-21
Score: 4.4 Medium
EPSS: n/a
KEV: No
Impact: Cross‑Site Scripting that can read content and perform authenticated same‑origin requests
Action: Apply Patch
AI Analysis

Impact

Joplin uses an unanchored regular expression in isAcceptedUrl to validate internal URLs. This is a Cross‑Site Scripting vulnerability (CWE‑79). Prior to 3.7.2, a javascript: URL containing a matching 32‑character fragment could be considered valid and embedded into an HTML note. After publishing a crafted note as a public share, a user can trigger the script by middle‑click or opening in a new tab, causing the script to run within the Joplin Server origin. The script can read any content visible on the page and make authenticated same‑origin requests on behalf of a logged‑in user, effectively giving an attacker read and write capabilities within the user’s account.

Affected Systems

Joplin v3.7.0 through v3.7.1, and any earlier releases prior to 3.7.2, are affected. The issue originates in the Joplin Server component of the laurent22:Joplin application. Users of older Joplin installations who publish notes as public shares are susceptible.

Risk and Exploitability

The CVSS score of 4.4 indicates a moderate impact, and the EPSS score is not available. The vulnerability is not listed in CISA’s KEV catalog. Exploitation requires an attacker to upload a crafted note and the victim to open it in a browser that does not block javascript: navigation. Because the script runs in the same origin as the server, an attacker can read page content and issue authenticated requests, but the attack vector relies on user interaction and specific browser behaviors.

Generated by OpenCVE AI on September 21, 2026 at 22:38 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Joplin to version 3.7.2 or newer, where the issue is fixed.
  • If an immediate upgrade is not possible, disable the public sharing feature or restrict the shared note view to non‑interactive mode to prevent execution of external URLs.
  • Ensure that browsers used to access shared notes are configured to block or warn on javascript: URLs, or use a hardened browser that disables new‑tab navigation for javascript URLs.

Generated by OpenCVE AI on September 21, 2026 at 22:38 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 21 Sep 2026 21:30:00 +0000

Type Values Removed Values Added
Description Joplin is an open source note-taking and to-do application that organises notes and lists into notebooks. Prior to 3.7.2, isAcceptedUrl() in packages/renderer/htmlUtils.ts uses an unanchored regular expression for internal resource URLs, allowing a javascript: URL containing a matching 32-character path fragment to pass validation and be emitted into an HTML note's link. A low-privileged Joplin Server user can publish the crafted HTML note as a public share. In the current build, ordinary left-click is blocked; demonstrated execution requires middle-click or Open in new tab in an older or non-hardened browser because current Chrome and Firefox block javascript: new-tab navigation. When execution succeeds, the script runs in the Joplin Server origin, can read page-visible content, and can make authenticated same-origin requests when the victim is signed in. This issue is fixed in version 3.7.2.
Title Joplin: Stored XSS in public share viewer via javascript: URL bypass in isAcceptedUrl
Weaknesses CWE-79
References
Metrics cvssV3_1

{'score': 4.4, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:L/I:L/A:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-21T21:16:12.297Z

Reserved: 2026-05-15T20:11:54.585Z

Link: CVE-2026-46650

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-21T22:16:56.480

Modified: 2026-09-21T22:16:56.480

Link: CVE-2026-46650

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-21T22:45:17Z

Weaknesses
  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')