Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as invited low-priv user
-
DeliveryReceive pending folder-share invite
-
ExploitPOST item with target share_id
-
ExecutioncheckIfAllowed passes (no Accepted check)
-
PersistupdateSharedItems3 propagates content
-
ImpactInjected note reaches owner and participants
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization logic validation
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires (1) a running Joplin Server instance prior to version 3.7.7, (2) an authenticated low-privileged user account (PR:L), and (3) that the attacker has been sent a folder-share invitation which is still in the pending/Waiting state (ShareUserStatus not yet Accepted). Given those, the attacker sends an item-creation API request specifying the target share_id; the flaw is in ItemModel.checkIfAllowed() accepting any share_users row regardless of acceptance status. LIMITING FACTORS: attacker cannot target arbitrary shares - a legitimate invitation to the specific shared folder is a prerequisite, so this is scoped to social/collaboration relationships; impact is limited to injecting content (integrity), with no read or deletion capability. This is not exploitable against default configurations without the invitation precondition. |
| Impact | This is a genuine but low-to-moderate severity authorization flaw, not a high-impact emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N, 4.3) is internally consistent with the description and the patch: network-reachable, low complexity, but requiring an authenticated low-privileged account (PR:L) and yielding only limited integrity impact (I:L) - the attacker can inject/create items into a share but cannot read (C:N) or delete/deny (A:N) existing owner data. No EPSS score, KEV entry, or public POC was provided, so exploitation status is 'no public exploit identified at time of analysis.' The one meaningful gating factor beyond authentication is that the attacker must have received a pending folder-share invitation from the target - the server does not let arbitrary users write into arbitrary shares, only into shares they were invited to but have not yet accepted. That significantly narrows the realistic attacker population and makes this a targeted, socially-scoped issue rather than a broadly automatable one. Priority is moderate for Joplin Server operators (patch in normal cadence); it does not warrant emergency response absent active-exploitation signals. |
| Exploit ScenarioDerived | An attacker who has been invited to collaborate on a shared folder (but has not yet clicked accept) issues an authenticated API call to create a note under the share's ID. Because ItemModel.checkIfAllowed() only checks that a share_users row exists - not that its status is Accepted - the write succeeds, and ShareModel.updateSharedItems3() then propagates the attacker's injected content to the folder owner and all accepted participants. No public exploit code is identified, but the fix commit's regression test demonstrates the exact request sequence. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 21, 2026
Joplin Server prior to 3.7.7 lets an authenticated low-privileged user who holds a *pending* (not yet accepted) folder-share invitation write new items directly into that shared folder, because ItemModel.checkIfAllowed() accepts any share_users row for the caller without requiring ShareUserStatus.Accepted. The injected content is then pushed out to the share owner and already-accepted participants by ShareModel.updateSharedItems3() before the attacker ever accepts the invitation, giving unauthorized content injection into another user's notebook. The flaw requires the invitation precondition, so it is not exploitable against arbitrary shares or default configurations with no pending invite; impact is integrity-only (CVSS 3.1 base 4.3, C:N/I:L/A:N, PR:L), no public exploit code was identified at time of analysis, and the issue is fixed in 3.7.7.
RemediationAI
Vendor-released patch: 3.7.7 - upgrade every self-hosted Joplin Server instance to 3.7.7 or later, which enforces the ShareUserStatus.Accepted requirement in ItemModel.checkIfAllowed() (upstream fix commit dff533ccbd2b300eac218a11a7619280865e2e9b; advisory https://github.com/laurent22/joplin/security/advisories/GHSA-qq59-gg3w-pf7v). Because the patch is server-side only, no client upgrade is needed, and there is no configuration toggle that closes the gap on older builds. If immediate upgrade is impossible, the highest-value compensating control is to eliminate the prerequisite itself: query the share_users table for rows whose status is not Accepted and either cancel or let expire outstanding invitations, which removes every user who could exercise the bypass - the trade-off is that legitimate collaborators cannot be onboarded until they are re-invited and accepted after the upgrade. A second option is to restrict API access so that item-creation requests carrying a share_id can only be issued by accounts with an Accepted membership, implemented either at a reverse proxy via request inspection (fragile, since share_id values appear in request bodies) or by temporarily disabling the Joplin data API for untrusted accounts - the latter breaks legitimate sync and automation clients. Finally, audit existing shares for items authored by users whose share_users status was Waiting at the time of creation using ShareModel change history and delete any injected notes, since content propagated by updateSharedItems3() persists in the owner's notebook even after the invitation is accepted or revoked.
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
At the root of this issue is CWE-863 (Incorrect Authorization): the authorization check in Joplin Server's ItemModel.checkIfAllowed() treated the mere existence of a share_users row as sufficient proof of write access to an item belonging to a share. Joplin's sharing model is membership-based - a Share row has ShareUser rows whose status transitions from Waiting (invitation sent, not yet accepted) to Accepted - and the server's sync/ItemModel layer is the enforcement point for per-item access. The vulnerable code path was reachable through the Joplin data API item-creation route (POST on items, with a parent_id and share_id supplied by the client), and because the propagation routine ShareModel.updateSharedItems3() runs over share membership independently of the caller's own acceptance state, a Waiting invitee could seed an item under the share ID and have it fanned out to the owner and Accepted members. The upstream commit dff533ccbd2b300eac218a11a7619280865e2e9b fixes this by importing ShareUserStatus and changing the guard to 'if (!shareUser || shareUser.status !== ShareUserStatus.Accepted) throw new ErrorForbidden(...)', and the accompanying regression test in shares.folder.test.ts asserts that a Waiting recipient receives an ErrorForbidden on note creation and that the item is not retrievable by the share owner afterward. The CPE string cpe:2.3:a:laurent22:joplin:*:*:*:*:*:*:*:* is an unversioned wildcard for the Joplin product family, so version scoping must come from the GHSA advisory text rather than the CPE.
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:N/S:U/C:N/I:L/A:N
Network API, low complexity, requires an authenticated invited user (PR:L) with a pending share invite; only content injection so I:L, no read (C:N) or denial (A:N).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.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 ItemModel.checkIfAllowed() authorizes writes to items with a share ID when any share_users row exists for the caller, without requiring ShareUserStatus.Accepted. A low-privileged authenticated user with a pending folder-share invitation can create an item under the share ID, and ShareModel.updateSharedItems3() propagates the injected content to the owner and accepted participants before the attacker accepts the invitation. This issue is fixed in version 3.7.7.
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
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-84177
NVD
CVE.org
EPSS
GitHub
Exploit-DB