{"id":"CVE-2026-49453","title":"Joplin is an open source note-taking and to-do application that organises notes and lists into notebooks","summary":"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 pa…","severity":"high","cvss":7,"cvssVector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:H/A:L","cwe":["CWE-20","CWE-22"],"vendor":"laurent22","product":"joplin","affected":["joplin < 3.6.15","joplin >= 3.7.0, < 3.7.2"],"published":"2026-09-21","updated":"2026-09-22","sourceUpdated":"2026-09-22T14:17:12.937","source":"NVD","sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-49453","references":[{"url":"https://github.com/laurent22/joplin/commit/18e0b08c282c89ae51612c4eff67af2a45ff5163","label":"security-advisories@github.com"},{"url":"https://github.com/laurent22/joplin/commit/50518073740c4501058e366300b42c2f1925cb05","label":"security-advisories@github.com"},{"url":"https://github.com/laurent22/joplin/pull/15540","label":"security-advisories@github.com"},{"url":"https://github.com/laurent22/joplin/pull/15672","label":"security-advisories@github.com"},{"url":"https://github.com/laurent22/joplin/security/advisories/GHSA-r24r-gp6h-cwgf","label":"security-advisories@github.com"},{"url":"https://github.com/laurent22/joplin/security/advisories/GHSA-r24r-gp6h-cwgf","label":"134c704f-9b21-4f2e-91b3-4a467353bcc0"}],"tags":["nvd","cve.org","exploit-available"],"epss":0.00288,"epssPercentile":0.21612,"exploitAvailable":true,"ssvc":{"exploitation":"poc","automatable":"no","technicalImpact":"partial","timestamp":"2026-09-22T13:31:17.285182Z"},"ingestedAt":"2026-09-21T21:53:57.417Z","slug":"CVE-2026-49453","body":"## Overview\n\nJoplin 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.\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.","depth":"midnight","depthScore":51,"depthScoreParts":{"impact":38.5,"likelihood":0.1,"exploitation":12,"ransomware":0},"changes":[{"seq":209055,"id":"CVE-2026-49453","ts":1790085894602,"field":"exploit_available","old":"false","new":"true"}]}