Skip to main content

Joplin Server CVE-2026-59814

| EUVDEUVD-2026-84174 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-09-21 GitHub_M
7.6
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as low-privileged Joplin user
  2. Delivery
    Upload empty-title image/svg+xml resource with embedded script
  3. Exploit
    Publish note as public share
  4. Execution
    Deliver share link to authenticated victim
  5. Persist
    Victim opens share, SVG served inline same-origin
  6. Impact
    Script reads admin data and anti-CSRF tokens, acts as victim

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires a running Joplin Server instance prior to 3.7.7 and a low-privileged authenticated account able to upload resources and create shares (PR:L). The attacker must publish a resource attachment with an empty title and an attacker-controlled MIME of image/svg+xml (the empty title is what causes Content-Disposition to be omitted, letting the SVG render inline). A victim must open the resulting public share link (UI:R). Full application-origin impact - reading administrative data and anti-CSRF tokens - occurs under the DEFAULT configuration where user content shares the Joplin Server application origin; instances configured with a separate USER_CONTENT_BASE_URL still execute the script but confine it to the user-content origin, and the highest-value outcome requires the victim to be an authenticated (ideally administrative) user.

Impact

This is a genuine, well-substantiated stored XSS (CWE-79) in Joplin Server prior to 3.7.7, confirmed by the vendor advisory (GHSA-mx98-7h4g-6gmh), the fixing PR #15787, and the commit 920cd8f4 whose regression tests reproduce the exact behavior. The CVSS vector CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:L/A:N (7.6) is well-calibrated: network attack vector, low complexity, only low privileges required (any user who can publish a share), user interaction required (victim must open the share), and a scope change because the injected script executes in the Joplin Server application origin against a different user's session. The C:H rating is justified because the script can read same-origin administrative data and anti-CSRF tokens; I:L reflects the ability to perform limited actions with the victim's session. No EPSS score, no CISA KEV listing, and no public exploit code are present in the supplied data, so exploitation status is 'no public exploit identified at time of analysis' - the high CVSS is driven by impact and scope, not by observed exploitation. Realistically this is a moderate priority for organizations running self-hosted Joplin Server: exploitation is gated behind holding a low-privileged account, a victim opening a specific public share, and (for full application-origin impact) the default configuration where user content shares the app origin. Installations using a separate USER_CONTENT_BASE_URL origin still execute the script but confine it to the user-content origin, materially reducing impact - a mitigating factor worth verifying per deployment. No conflicting signals were found between the CVSS vector and the description; both consistently indicate authenticated remote injection with victim interaction.

Exploit ScenarioDerived

A low-privileged user of a Joplin Server instance uploads an image/svg+xml attachment with an empty title containing an embedded <script>, references it from a note, and publishes it as a public share. When a victim - ideally an authenticated administrator - opens the share link, the server serves the SVG inline with the attacker-controlled MIME and no Content-Disposition, so the script runs in the Joplin Server application origin and can read admin data and anti-CSRF tokens and act with the victim's session. No public exploit code is identified, but the fixing PR's tests demonstrate the payload precisely.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 21, 2026

Stored cross-site scripting in Joplin Server before 3.7.7 allows an authenticated, low-privileged user to publish an empty-title resource whose attacker-controlled MIME type (image/svg+xml) is served inline, so a crafted SVG executes in a victim's browser when the public share link is opened. The flaw lives in the GET /shares/:id?resource_id= route, which reflects the user-supplied MIME and omits Content-Disposition when the resource title is empty; under the default configuration user content shares the Joplin Server application origin, so the script can read same-origin administrative data and anti-CSRF tokens and, against an authenticated victim, act with that victim's session. Installations that set a separate USER_CONTENT_BASE_URL still execute the script, but confined to the user-content origin; the issue is fixed in 3.7.7 and no public exploit code was identified at time of analysis.

RemediationAI

Upgrade Joplin Server to version 3.7.7, which is the vendor-released patch containing the safeUserContentResponse sanitization applied to both the share and item content routes (advisory: https://github.com/laurent22/joplin/security/advisories/GHSA-mx98-7h4g-6gmh; fix commit: https://github.com/laurent22/joplin/commit/920cd8f463bf9bbce9daa07581676123007118e5). If immediate upgrade is not possible, the most effective compensating control is to configure USER_CONTENT_BASE_URL so user content is served from a separate origin - this confines any executed SVG script to the user-content origin and prevents access to Joplin Server application data and anti-CSRF tokens, but it requires additional DNS and TLS configuration, does not stop the script from running, and leaves the user-content origin itself exposed; note that this configuration is documented by the vendor as the relevant hardening measure rather than a complete fix. Deployments that do not require public sharing can disable or restrict share creation entirely to remove the attack path, at the cost of losing the sharing feature, and restricting which accounts may create shares reduces but does not eliminate exposure because the vulnerability is reachable by any low-privileged authenticated user.

Affected VersionsENISA

joplin < 3.7.7

Affected Packages

euvd joplin fix: 3.7.7

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Joplin Server is the self-hosted synchronization and sharing backend for the Joplin note-taking application, and this is an improper neutralization of input during web page generation (CWE-79) in its public share resource handler. The GET /shares/:id?resource_id= route serves attachment bytes alongside a Content-Type taken directly from the user-controlled resource mime field; when a resource's title is empty, the code path that would have set an attachment Content-Disposition header is skipped, so a resource declared as image/svg+xml is delivered inline and its embedded script executes in the browser. Because user content is served from the same origin as the Joplin Server application by default, the script runs with the application's origin privileges, enabling same-origin reads of administrative data and anti-CSRF tokens in an authenticated victim's session; the separate-origin configuration (USER_CONTENT_BASE_URL) still executes script but isolates it to that user-content origin. The fixing commit 920cd8f4 introduces a shared safeUserContentResponse helper that, for user-controlled MIME types and filenames, forces Content-Type application/octet-stream, sets an attachment Content-Disposition, and adds X-Content-Type-Options: nosniff plus a Content-Security-Policy of default-src 'none'; sandbox, while still allowing safe MIME types such as image/png to render inline with the same hardened headers. Regression tests in PR #15787 cover both the public share route and the authenticated items/:id/content route, confirming that the same sanitization applies to both.

Know when Joplin gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_M) PRIMARY 7.6 HIGH
AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:L/A:N
vuln.today AI 7.6 HIGH

Low-priv authed user injects (PR:L), victim must open share (UI:R), script escapes to app origin affecting other users (S:C), reads admin data/tokens (C:H) with limited session actions (I:L).

3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:L/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
Required
Scope
Changed
Confidentiality
High
Integrity
Low
Availability
None

Lifecycle Timeline

2
Patch available
Sep 21, 2026 - 22:02 EUVD
CVE Published
Sep 21, 2026 - 21:13 cve.org
HIGH 7.6

DescriptionCVE.org

Joplin is an open source note-taking and to-do application that organises notes and lists into notebooks. Prior to 3.7.7, Joplin Server's GET /shares/:id?resource_id= route serves a resource with the attacker-controlled mime value and omits Content-Disposition when the resource title is empty. A low-privileged user can publish an empty-title image/svg+xml attachment whose script executes when a victim opens the public share. By default, user content shares the Joplin Server application origin, allowing the script to access same-origin data and, when the victim is authenticated, perform actions with the victim's session, including reading administrative data and anti-CSRF tokens. Installations that configure USER_CONTENT_BASE_URL to a separate origin still execute the script, but on that separate user-content origin rather than the application origin. This issue is fixed in version 3.7.7.

Technical POC Analysis

CWE-79 (Improper Neutralization of Input During Web Page Generation).

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

A stored cross-site scripting flaw in Joplin Server (all versions before 3.7.7) allows a low-privileged account holder to plant a malicious script inside a public share link, which then executes in the browser of anyone who opens that link - including administrators. Because shared user content is served from the same origin as the Joplin Server application by default, the script can read administrative data and anti-CSRF tokens and act with the victim's session, so a single opened link can escalate from a routine file share into compromise of privileged accounts and the data those accounts reach. Leadership should care because this turns trusted internal collaboration links into a session-hijacking vector against administrators and other staff, and the affected service is typically reachable by every user in the organisation; no public exploit code was identified at time of analysis.

Business Impact: High
Compensating Controls

Apply vendor patch (Joplin Server 3.7.7 or later). Until the upgrade is complete, set a separate USER_CONTENT_BASE_URL so executing content is confined to the user-content origin, restrict or disable public share creation for low-privileged accounts, force user-uploaded content to download rather than render inline (Content-Disposition: attachment; block or download-only image/svg+xml), and apply a restrictive Content-Security-Policy on share routes to prevent inline script execution.

Threat Intelligence Overview

EPSS Score
0.3%
Top 83% exploitable
Prevalence
Low
self-hosted Joplin Server is a niche deployment, not enterprise-ubiquitous
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

Cross-Site Request Forgery exploits the automatic credential inclusion behavior of web browsers.

More in Joplin

View all
CVE-2025-27134 HIGH POC
8.8 Apr 30

Joplin is a free, open source note taking and to-do application, which can handle a large number of notes organised into

CVE-2024-49362 CRITICAL POC
9.6 Nov 14

Joplin is a free, open source note taking and to-do application. Rated critical severity (CVSS 9.6), this vulnerability

CVE-2024-40643 CRITICAL POC
9.6 Sep 09

Joplin is a free, open source note taking and to-do application. Rated critical severity (CVSS 9.6), this vulnerability

CVE-2022-35131 CRITICAL POC
9.0 Jul 25

Joplin v2.8.8 allows attackers to execute arbitrary commands via a crafted payload injected into the Node titles. Rated

CVE-2026-46649 CRITICAL POC
9.1 Sep 21

Joplin Server instances prior to 3.7.2 expose an SSO login-code redemption endpoint (GET /api/login_with_code/:id) that

CVE-2024-53268 HIGH POC
8.8 Nov 25

Joplin is an open source, privacy-focused note taking app with sync capabilities for Windows, macOS, Linux, Android and

CVE-2022-40277 HIGH POC
7.8 Sep 30

Joplin version 2.8.8 allows an external attacker to execute arbitrary commands remotely on any client that opens a link

CVE-2025-27409 HIGH POC
7.5 Apr 30

Joplin is a free, open source note taking and to-do application, which can handle a large number of notes organised into

CVE-2020-28249 MEDIUM POC
6.1 Nov 06

Joplin 1.2.6 for Desktop allows XSS via a LINK element in a note. Rated medium severity (CVSS 6.1), this vulnerability i

CVE-2020-15930 MEDIUM POC
6.1 Sep 24

An XSS issue in Joplin desktop 1.0.190 to 1.0.245 allows arbitrary code execution via a malicious HTML embed tag. Rated

CVE-2018-1000534 MEDIUM POC
6.1 Jun 26

Joplin version prior to 1.0.90 contains a XSS evolving into code execution due to enabled nodeIntegration for that parti

CVE-2020-9038 MEDIUM POC
5.4 Feb 17

Joplin through 1.0.184 allows Arbitrary File Read via XSS. Rated medium severity (CVSS 5.4), this vulnerability is remot

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy