CVE-2026-46650: Joplin: XSS via unanchored URL regex in shared notes

MEDIUMPoC AVAILABLECISA: TRACK*
Published September 21, 2026
CISO Take

Joplin's HTML renderer validates internal resource URLs with an unanchored regular expression, so a javascript: link containing a matching 32-character fragment passes validation. A low-privileged Joplin Server user can publish such a note as a public share, and script runs in the Server origin if a signed-in victim opens the link in a new tab (CVSS 4.4, medium). Exploitation is unlikely at scale: EPSS is 0.28% (top 81%), the vulnerability is not in CISA KEV, and the SSVC decision is Track*. A public PoC exists, but modern Chrome and Firefox block javascript: new-tab navigation, which makes real-world exploitation difficult. Upgrade Joplin and Joplin Server to 3.7.2 or later, and review existing public shares for suspicious javascript: links.

Sources:NVDEPSSGitHub AdvisoryATLAS

What is the risk?

Low-to-medium. Attack complexity is high and user interaction is required: the victim must middle-click or choose 'Open in new tab' on a crafted link, and current Chrome and Firefox block javascript: navigation. Scope changes because script runs in the Joplin Server origin. A PoC is public, but exploitation likelihood is low (EPSS 0.28%) and there is no KEV listing. The AI relevance is tangential: Joplin is a note-taking tool that may hold sensitive notes or AI-related credentials, not an AI/ML framework.

How does the attack unfold?

Initial Access
A low-privileged user publishes an HTML note with a crafted javascript: link as a public share.
AML.T0049
User Execution
The victim middle-clicks or opens the link in a new tab in an older or non-hardened browser.
AML.T0011.003
Exploitation
The script runs in the Joplin Server origin, bypassing the unanchored URL validation.
Impact
The script reads page-visible content and makes authenticated same-origin requests as the victim.

How severe is it?

CVSS 3.1
4.4 / 10
EPSS
0.3%
chance of exploitation in 30 days
Higher than 21% of all CVEs
Exploitation Status
Exploit Available
Exploitation: MEDIUM
Sophistication
Moderate
Exploitation Confidence
medium
○CISA SSVC: Public PoC
○Public PoC indexed (trickest/cve)
Composite signal derived from CISA KEV, VulnCheck KEV, CISA SSVC, EPSS, Metasploit, Exploit-DB, trickest/cve, Nuclei templates, and inthewild.io exploitation reports.

What is the attack surface?

AVACPRUISCIA
AVNetwork
ACHigh
PRLow
UIRequired
SChanged
CLow
ILow
ANone

What should I do?

1 step
  1. 1) Upgrade Joplin and Joplin Server to 3.7.2 or later (fix in PR #15435). 2) Audit public shares for links using javascript: schemes. 3) Restrict who can publish public shares on self-hosted Joplin Server. 4) Keep browsers current, since modern Chrome and Firefox block javascript: new-tab navigation. 5) Apply a strict Content-Security-Policy on the Joplin Server origin. 6) Advise users not to middle-click or open links from untrusted shared notes in a new tab.

What does CISA's SSVC say?

DecisionTrack*
Exploitationpoc
AutomatableNo
Technical Impactpartial

Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.

How is it classified?

Which compliance frameworks are affected?

This CVE is relevant to:

ISO 42001
A.6.2.6-AI system operation and monitoring
NIST AI RMF
MANAGE 2.3-Response to previously unknown risks
OWASP LLM Top 10
LLM03-Supply Chain

Frequently Asked Questions

What is CVE-2026-46650?

Joplin's HTML renderer validates internal resource URLs with an unanchored regular expression, so a javascript: link containing a matching 32-character fragment passes validation. A low-privileged Joplin Server user can publish such a note as a public share, and script runs in the Server origin if a signed-in victim opens the link in a new tab (CVSS 4.4, medium). Exploitation is unlikely at scale: EPSS is 0.28% (top 81%), the vulnerability is not in CISA KEV, and the SSVC decision is Track*. A public PoC exists, but modern Chrome and Firefox block javascript: new-tab navigation, which makes real-world exploitation difficult. Upgrade Joplin and Joplin Server to 3.7.2 or later, and review existing public shares for suspicious javascript: links.

Is CVE-2026-46650 actively exploited?

Proof-of-concept exploit code is publicly available for CVE-2026-46650, increasing the risk of exploitation.

How to fix CVE-2026-46650?

1) Upgrade Joplin and Joplin Server to 3.7.2 or later (fix in PR #15435). 2) Audit public shares for links using javascript: schemes. 3) Restrict who can publish public shares on self-hosted Joplin Server. 4) Keep browsers current, since modern Chrome and Firefox block javascript: new-tab navigation. 5) Apply a strict Content-Security-Policy on the Joplin Server origin. 6) Advise users not to middle-click or open links from untrusted shared notes in a new tab.

What systems are affected by CVE-2026-46650?

This vulnerability affects the following AI/ML architecture patterns: Self-hosted note-taking and knowledge management servers, Shared documentation platforms.

What is the CVSS score for CVE-2026-46650?

CVE-2026-46650 has a CVSS v3.1 base score of 4.4 (MEDIUM). The EPSS exploitation probability is 0.28%.

What is the AI security impact?

Affected AI Architectures

Self-hosted note-taking and knowledge management serversShared documentation platforms

MITRE ATLAS Techniques

AML.T0011.003Malicious Link
AML.T0049Exploit Public-Facing Application

Compliance Controls Affected

ISO 42001: A.6.2.6
NIST AI RMF: MANAGE 2.3
OWASP LLM Top 10: LLM03

What are the technical details?

Original Advisory

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.

Exploitation Scenario

A low-privileged user on a shared Joplin Server publishes an HTML note containing a link whose javascript: URL embeds a 32-character hex fragment to bypass isAcceptedUrl(). The attacker shares the public note URL with a team member who is signed in to the same Server. The victim middle-clicks the link or opens it in a new tab in an older or non-hardened browser, and the script runs in the Server origin. It reads visible content and issues authenticated requests that could expose or modify the victim's notes.

Weaknesses (CWE)

CWE-79 — Improper Neutralization of Input During Web Page Generation: The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.

  • [Architecture and Design] Use a vetted library or framework that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid [REF-1482]. Examples of libraries and frameworks that make it easier to generate properly encoded output include Microsoft's Anti-XSS library, the OWASP ESAPI Encoding module, and Apache Wicket.
  • [Implementation, Architecture and Design] Understand the context in which your data will be used and the encoding that will be expected. This is especially important when transmitting data between different components, or when generating outputs that can contain multiple encodings at the same time, such as web pages or multi-part mail messages. Study all expected communication protocols and data representations to determine the required encoding strategies. For any data that will be output to another web page, especially any data that was received from external inputs, use the appropriate encoding on all non-alphanumeric characters. Parts of the same output document may require different encodings, which will vary depending on whether the output is in the: etc. Note that HTML Entity Encoding is only appropriate for the HTML body. Consult the XSS Prevention Cheat Sheet [REF-724] for more details on the types of encoding and escaping that are needed. HTML body Element attributes (such as src="XYZ") URIs JavaScript sections Casca

Source: MITRE CWE corpus.

CVSS Vector

CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:L/I:L/A:N

Timeline

Published
September 21, 2026
Last Modified
September 29, 2026
First Seen
September 21, 2026

Related Vulnerabilities