Skip to main content

Joplin CVE-2026-55105

| EUVDEUVD-2026-84172 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-09-21 security-advisories@github.com
7.7
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

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

  1. Access
    Authenticate and craft malicious Fountain code block
  2. Delivery
    Share note or publish via Joplin Server
  3. Exploit
    Victim renders note with Fountain enabled
  4. Execution
    Unsanitized HTML executes script in viewer/server origin
  5. Impact
    Exfiltrate reused-viewer or authenticated server-origin data

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 Fountain rendering to be enabled: this is non-default in desktop and mobile clients (user must enable it), but is ENABLED BY DEFAULT when notes are published through Joplin Server. The attacker must be able to get a malicious Fountain code block in front of a victim (authoring/sharing a note or a published note, consistent with PR:L). Impact is amplified when published notes are served from the same domain as server content, allowing access to data available to the authenticated browser in the server origin (the S:C, C:H scenario). Limiting factors: affects only Joplin versions prior to 3.6.15 / 3.7.2, requires Fountain rendering active, and impact is confidentiality-only (no integrity or availability effect).

Impact

This is a genuine but conditionally-gated stored XSS (CWE-79) in Joplin, a popular open-source note-taking app. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N, 7.7) reflects a scope-changing script-injection where a malicious Fountain code block executes JavaScript in the note-viewer or, for notes published via Joplin Server, in the authenticated server origin (hence S:C and C:H). The source diff confirms the root cause and fix: fountain.ts previously passed vendored fountain.js HTML output straight into note output, and the patch wraps both titlePageHtml and the script body in htmlUtils.sanitizeHtml() - the added test (sanitize_24) proves an <img onerror=...> payload was rendered live before the fix. Exploitation status is 'no public exploit identified at time of analysis': no CISA KEV listing, no POC referenced, and no EPSS score was supplied. The confidentiality-only impact is real (C:H, I:N, A:N) but exploitation depends on Fountain rendering being enabled - non-default on desktop/mobile but default-on when publishing through Joplin Server - which meaningfully narrows real-world exposure. Net: a legitimate priority for Joplin Server publishing deployments, but not a widespread drive-by threat; treat as medium-priority patch given a fix is confirmed available and no active exploitation is known. Note EPSS/KEV/POC signals are all absent from the input, so risk is assessed from CVSS and the confirmed patch alone.

Exploit ScenarioDerived

An attacker authors a note containing a crafted Fountain code block with an HTML/script payload (e.g. <img src=x onerror=...>) and gets it rendered by a victim - either shared/opened in a client with Fountain enabled, or published through Joplin Server where Fountain rendering is on by default. When the victim views it, the unsanitized payload executes in the note viewer and can read content later loaded in the reused viewer or, on a same-domain published server, access data available to the authenticated browser session. No public exploit code is identified, but the fix commit includes a working proof-of-concept payload in its regression test.

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's Fountain screenplay rendering path lets a malicious Fountain code block execute script in the note viewer whenever Fountain rendering is active. Affected are Joplin desktop and mobile clients prior to 3.6.15 and 3.7.2, plus Joplin Server deployments where published notes are rendered with Fountain enabled by default; the injected script can read content later loaded into the reused note viewer, and when published notes share the server's origin it can reach data available to an authenticated browser session in that origin. Exploitation requires the attacker to plant the malicious Fountain block in a note the victim renders (consistent with the PR:L vector), and no public exploit code was identified at time of analysis - the risk is real but gated on Fountain rendering being enabled. Fixed versions 3.6.15 and 3.7.2 are available.

RemediationAI

Vendor-released patch: upgrade Joplin to 3.6.15 or 3.7.2, the versions in which the Fountain renderer output is passed through htmlUtils.sanitizeHtml(); the fix is present in commit 8e0812de9d79d1f0698bb76a8c5d7e991df9748d and detailed in the advisory at https://github.com/laurent22/joplin/security/advisories/GHSA-f7q3-3grx-6wg9 (also see PR https://github.com/laurent22/joplin/pull/15659). If upgrading immediately is not possible, disable or avoid Fountain rendering on desktop and mobile clients - this is already a non-default, user-controlled setting, so leaving it off removes the attack surface entirely, at the cost of losing Fountain screenplay previews. For Joplin Server operators, Fountain rendering is enabled by default for published notes, so either upgrade or disable Fountain support for published notes; because the confidentiality impact in that scenario stems from published notes sharing the server's origin, isolating published content onto a separate origin (or restricting which notes can be published) limits the blast radius but does not fix the underlying sanitization gap and should be treated only as a temporary containment step. There is no confirmed public exploit code at time of analysis, but the stored-XSS payload is trivial to construct, so treat patching as time-sensitive.

Affected VersionsENISA

joplin 3.7.0, < 3.7.2
joplin < 3.6.15

Affected Packages

euvd joplin fix: 3.6.15, 3.7.2

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 renders Markdown to HTML through a markdown-it pipeline in packages/renderer, where the rule module packages/renderer/MdToHtml/rules/fountain.ts converts `fountain fenced blocks using a vendored copy of fountain.js. The bug (CWE-79, improper neutralization of input during web page generation) is that the HTML emitted by fountain.js - including both the rendered script body and any title-page HTML - was interpolated directly into the note output without passing through Joplin's HTML sanitizer. Because the injected markup is stored inside the note and re-rendered each time the note is opened, this is a stored XSS rather than a reflected one. The upstream fix imports htmlUtils and wraps both the title-page fragment and the fountain.js script output in htmlUtils.sanitizeHtml() before insertion, which strips the dangerous attributes and elements that let markup such as an <img onerror=...> payload execute. The CVSS vector's scope change (S:C) and confidentiality-only impact (C:H/I:N/A:N) reflect the fact that the injected script executes with the privileges of the note viewer or, in the Joplin Server publishing case, potentially within the origin hosting server content.

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) PRIMARY 7.7 HIGH
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N
vuln.today AI 7.7 HIGH

PR:L because the attacker must author/publish a note; S:C and C:H because injected script escapes into the server/viewer origin to read authenticated data; no integrity or availability impact.

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

Primary rating from Vendor (github).

CVSS VectorVendor: github

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

Lifecycle Timeline

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

DescriptionCVE.org

Joplin is an open source note-taking and to-do application that organises notes and lists into notebooks. Prior to 3.6.15 and 3.7.2, packages/renderer/MdToHtml/rules/fountain.ts passes HTML generated by the vendored fountain.js renderer into note output without sanitizing it. A malicious Fountain code block can therefore execute script when Fountain rendering is enabled in desktop or mobile clients, or when a note is published through Joplin Server where Fountain rendering is enabled by default. The script can read content subsequently loaded in the reused note viewer or, when published notes are served from the same domain as server content, access data available to an authenticated browser in the server origin. This issue is fixed in versions 3.6.15 and 3.7.2.

Technical POC Analysis

CWE-79 (improper neutralisation of input during web page generation - stored XSS).

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 script-injection flaw in Joplin's Fountain screenplay rendering affects desktop and mobile clients prior to 3.6.15 and 3.7.2, as well as Joplin Server deployments that publish notes with Fountain rendering enabled by default. Because published notes can share the server's origin, an attacker-planted note can reach data available to an authenticated browser session, making this a data-exposure risk for the organization's note-sharing and publishing workflows rather than a cosmetic rendering issue. Leadership should care because the affected clients are widely used for handling sensitive internal content, and remediation requires coordinated client and server upgrades.

Business Impact: High
Compensating Controls

Apply vendor patch. Until upgraded to 3.6.15 or 3.7.2, disable Fountain rendering in affected Joplin clients and Joplin Server so malicious Fountain code blocks are not rendered, and limit which users can author or receive notes from untrusted sources.

Threat Intelligence Overview

EPSS Score
0.3%
Top 75% exploitable
Prevalence
Medium
popular open-source cross-platform note app, common but not enterprise-ubiquitous
Data Quality
5 sources
Confidence: Medium

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· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

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.

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