{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2026-46650", "assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa", "state": "PUBLISHED", "assignerShortName": "GitHub_M", "dateReserved": "2026-05-15T20:11:54.585Z", "datePublished": "2026-09-21T21:16:12.297Z", "dateUpdated": "2026-09-21T21:16:12.297Z" }, "containers": { "cna": { "title": "Joplin: Stored XSS in public share viewer via javascript: URL bypass in isAcceptedUrl", "problemTypes": [ { "descriptions": [ { "cweId": "CWE-79", "lang": "en", "description": "CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')", "type": "CWE" } ] } ], "metrics": [ { "cvssV3_1": { "attackComplexity": "HIGH", "attackVector": "NETWORK", "availabilityImpact": "NONE", "baseScore": 4.4, "baseSeverity": "MEDIUM", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "privilegesRequired": "LOW", "scope": "CHANGED", "userInteraction": "REQUIRED", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:L/I:L/A:N", "version": "3.1" } } ], "references": [ { "name": "https://github.com/laurent22/joplin/security/advisories/GHSA-x9vj-jrqf-9wcm", "tags": [ "x_refsource_CONFIRM" ], "url": "https://github.com/laurent22/joplin/security/advisories/GHSA-x9vj-jrqf-9wcm" }, { "name": "https://github.com/laurent22/joplin/pull/15435", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/laurent22/joplin/pull/15435" }, { "name": "https://github.com/laurent22/joplin/commit/9fdc2d4adbd7b7326a2d0dcc32e12b705bfc285e", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/laurent22/joplin/commit/9fdc2d4adbd7b7326a2d0dcc32e12b705bfc285e" } ], "affected": [ { "vendor": "laurent22", "product": "joplin", "versions": [ { "version": "< 3.7.2", "status": "affected" } ] } ], "providerMetadata": { "orgId": "a0819718-46f1-4df5-94e2-005712e83aaa", "shortName": "GitHub_M", "dateUpdated": "2026-09-21T21:16:12.297Z" }, "descriptions": [ { "lang": "en", "value": "Joplin is an open source note-taking and to-do application that organises notes and lists into notebooks. Prior to 3.7.2, isAcceptedUrl() in packages/renderer/htmlUtils.ts uses an unanchored regular expression for internal resource URLs, allowing a javascript: URL containing a matching 32-character path fragment to pass validation and be emitted into an HTML note's link. A low-privileged Joplin Server user can publish the crafted HTML note as a public share. In the current build, ordinary left-click is blocked; demonstrated execution requires middle-click or Open in new tab in an older or non-hardened browser because current Chrome and Firefox block javascript: new-tab navigation. When execution succeeds, the script runs in the Joplin Server origin, can read page-visible content, and can make authenticated same-origin requests when the victim is signed in. This issue is fixed in version 3.7.2." } ], "source": { "advisory": "GHSA-x9vj-jrqf-9wcm", "discovery": "UNKNOWN" } } } }