CVE-2026-49453
BaseItem.unserialize() stores the unvalidated fields, resourceFilename() concatenates them into a destination path, and ResourceFetcher writes the attacker-controlled resource blob outside the resource directory during background synchronization.
Does this matter?
High impact if exploited, but EPSS currently rates exploitation as unlikely (0.41%). Schedule it in the normal patch cycle and watch for a rise in EPSS or a public exploit.
Description
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, Joplin accepts synchronized resource metadata whose id or file_extension contains parent-directory or path-separator characters. BaseItem.unserialize() stores the unvalidated fields, resourceFilename() concatenates them into a destination path, and ResourceFetcher writes the attacker-controlled resource blob outside the resource directory during background synchronization. An attacker with write access to a configured sync target or shared notebook can create or overwrite files at an attacker-chosen existing path without user interaction. This issue is fixed in versions 3.6.15 and 3.7.2.
- CVSS 3.1
- 7.0 HIGHCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:L
- EPSS
- 0.41% probability · 35th percentile
- Public exploits
- None in Exploit-DB
- CISA KEV
- Not listed
- Weakness
- CWE-20, CWE-22
- Source
- security-advisories@github.com
EPSS moved from 0.3% on 22 September 2026 to 0.4% on 26 October 2026.
References
- https://github.com/laurent22/joplin/commit/18e0b08c282c89ae51612c4eff67af2a45ff5163
- https://github.com/laurent22/joplin/commit/50518073740c4501058e366300b42c2f1925cb05
- https://github.com/laurent22/joplin/pull/15540
- https://github.com/laurent22/joplin/pull/15672
- https://github.com/laurent22/joplin/security/advisories/GHSA-r24r-gp6h-cwgf
- https://github.com/laurent22/joplin/security/advisories/GHSA-r24r-gp6h-cwgf
Source: NVD record, EPSS from FIRST.org, KEV from CISA, exploits from Exploit-DB. Refreshed daily. Download this record as JSON.