Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privileged Joplin user
-
DeliveryUpload empty-title image/svg+xml resource with embedded script
-
ExploitPublish note as public share
-
ExecutionDeliver share link to authenticated victim
-
PersistVictim opens share, SVG served inline same-origin
-
ImpactScript 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
Affected Packages
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
AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:L/A:N
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).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.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
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.
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
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.
Joplin is a free, open source note taking and to-do application, which can handle a large number of notes organised into
Joplin is a free, open source note taking and to-do application. Rated critical severity (CVSS 9.6), this vulnerability
Joplin is a free, open source note taking and to-do application. Rated critical severity (CVSS 9.6), this vulnerability
Joplin v2.8.8 allows attackers to execute arbitrary commands via a crafted payload injected into the Node titles. Rated
Joplin Server instances prior to 3.7.2 expose an SSO login-code redemption endpoint (GET /api/login_with_code/:id) that
Joplin is an open source, privacy-focused note taking app with sync capabilities for Windows, macOS, Linux, Android and
Joplin version 2.8.8 allows an external attacker to execute arbitrary commands remotely on any client that opens a link
Joplin is a free, open source note taking and to-do application, which can handle a large number of notes organised into
Joplin 1.2.6 for Desktop allows XSS via a LINK element in a note. Rated medium severity (CVSS 6.1), this vulnerability i
An XSS issue in Joplin desktop 1.0.190 to 1.0.245 allows arbitrary code execution via a malicious HTML embed tag. Rated
Joplin version prior to 1.0.90 contains a XSS evolving into code execution due to enabled nodeIntegration for that parti
Joplin through 1.0.184 allows Arbitrary File Read via XSS. Rated medium severity (CVSS 5.4), this vulnerability is remot
EUVD-2026-84174
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB