{"api_version":"1","generated_at":"2026-10-05T23:52:03+00:00","cve":"CVE-2026-49450","urls":{"html":"https://cve.report/CVE-2026-49450","api":"https://cve.report/api/cve/CVE-2026-49450.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-49450","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-49450"},"summary":{"title":"Joplin desktop Windows auto-updater accepts signed installer from any publisher because app-update.yml has no publisherName","description":"Joplin is an open source note-taking and to-do application that organises notes and lists into notebooks. Prior to 3.7.2, Joplin Desktop for Windows omits publisherName from packages/app-desktop/package.json, so the generated app-update.yml causes NsisUpdater.verifySignature() to skip comparison of a downloaded update's Authenticode signer with Joplin's signer. An attacker who controls the update delivery path can replace the update metadata and installer, and the client accepts an installer signed by another publisher or left unsigned after the user approves installation. Successful exploitation runs attacker-controlled code with the user's privileges and can compromise notes, credentials, and local data. This issue is fixed in version 3.7.2.","state":"PUBLISHED","assigner":"GitHub_M","published_at":"2026-09-21 21:17:03","updated_at":"2026-09-23 18:30:42"},"problem_types":["CWE-345","CWE-353","CWE-494","CWE-345 CWE-345: Insufficient Verification of Data Authenticity","CWE-353 CWE-353: Missing Support for Integrity Check","CWE-494 CWE-494: Download of Code Without Integrity Check"],"metrics":[{"version":"3.1","source":"security-advisories@github.com","type":"Secondary","score":"7.1","severity":"HIGH","vector":"CVSS:3.1/AV:A/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H","data":{"version":"3.1","vectorString":"CVSS:3.1/AV:A/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H","baseScore":7.1,"baseSeverity":"HIGH","attackVector":"ADJACENT_NETWORK","attackComplexity":"HIGH","privilegesRequired":"NONE","userInteraction":"REQUIRED","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"HIGH"}},{"version":"3.1","source":"CNA","type":"DECLARED","score":"7.1","severity":"HIGH","vector":"CVSS:3.1/AV:A/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H","data":{"attackComplexity":"HIGH","attackVector":"ADJACENT_NETWORK","availabilityImpact":"HIGH","baseScore":7.1,"baseSeverity":"HIGH","confidentialityImpact":"HIGH","integrityImpact":"HIGH","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"REQUIRED","vectorString":"CVSS:3.1/AV:A/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H","version":"3.1"}}],"references":[{"url":"https://github.com/laurent22/joplin/pull/15539","name":"https://github.com/laurent22/joplin/pull/15539","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/laurent22/joplin/security/advisories/GHSA-9wp7-hr9m-3273","name":"https://github.com/laurent22/joplin/security/advisories/GHSA-9wp7-hr9m-3273","refsource":"134c704f-9b21-4f2e-91b3-4a467353bcc0","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/laurent22/joplin/commit/853659edf575c4f526c2b196e0629462aee9df28","name":"https://github.com/laurent22/joplin/commit/853659edf575c4f526c2b196e0629462aee9df28","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-49450","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-49450","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"laurent22","product":"joplin","version":"affected < 3.7.2","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"49450","cve":"CVE-2026-49450","epss":"0.001820000","percentile":"0.068410000","score_date":"2026-09-24","updated_at":"2026-09-25 00:02:55"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"adp":[{"metrics":[{"other":{"content":{"id":"CVE-2026-49450","options":[{"Exploitation":"poc"},{"Automatable":"no"},{"Technical Impact":"total"}],"role":"CISA Coordinator","timestamp":"2026-09-22T13:12:10.913874Z","version":"2.0.3"},"type":"ssvc"}}],"providerMetadata":{"dateUpdated":"2026-09-22T13:12:32.859Z","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP"},"references":[{"tags":["exploit"],"url":"https://github.com/laurent22/joplin/security/advisories/GHSA-9wp7-hr9m-3273"}],"title":"CISA ADP Vulnrichment"}],"cna":{"affected":[{"product":"joplin","vendor":"laurent22","versions":[{"status":"affected","version":"< 3.7.2"}]}],"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, Joplin Desktop for Windows omits publisherName from packages/app-desktop/package.json, so the generated app-update.yml causes NsisUpdater.verifySignature() to skip comparison of a downloaded update's Authenticode signer with Joplin's signer. An attacker who controls the update delivery path can replace the update metadata and installer, and the client accepts an installer signed by another publisher or left unsigned after the user approves installation. Successful exploitation runs attacker-controlled code with the user's privileges and can compromise notes, credentials, and local data. This issue is fixed in version 3.7.2."}],"metrics":[{"cvssV3_1":{"attackComplexity":"HIGH","attackVector":"ADJACENT_NETWORK","availabilityImpact":"HIGH","baseScore":7.1,"baseSeverity":"HIGH","confidentialityImpact":"HIGH","integrityImpact":"HIGH","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"REQUIRED","vectorString":"CVSS:3.1/AV:A/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H","version":"3.1"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-345","description":"CWE-345: Insufficient Verification of Data Authenticity","lang":"en","type":"CWE"}]},{"descriptions":[{"cweId":"CWE-353","description":"CWE-353: Missing Support for Integrity Check","lang":"en","type":"CWE"}]},{"descriptions":[{"cweId":"CWE-494","description":"CWE-494: Download of Code Without Integrity Check","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2026-09-21T20:49:04.423Z","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","shortName":"GitHub_M"},"references":[{"name":"https://github.com/laurent22/joplin/security/advisories/GHSA-9wp7-hr9m-3273","tags":["x_refsource_CONFIRM"],"url":"https://github.com/laurent22/joplin/security/advisories/GHSA-9wp7-hr9m-3273"},{"name":"https://github.com/laurent22/joplin/pull/15539","tags":["x_refsource_MISC"],"url":"https://github.com/laurent22/joplin/pull/15539"},{"name":"https://github.com/laurent22/joplin/commit/853659edf575c4f526c2b196e0629462aee9df28","tags":["x_refsource_MISC"],"url":"https://github.com/laurent22/joplin/commit/853659edf575c4f526c2b196e0629462aee9df28"}],"source":{"advisory":"GHSA-9wp7-hr9m-3273","discovery":"UNKNOWN"},"title":"Joplin desktop Windows auto-updater accepts signed installer from any publisher because app-update.yml has no publisherName"}},"cveMetadata":{"assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","assignerShortName":"GitHub_M","cveId":"CVE-2026-49450","datePublished":"2026-09-21T20:49:04.423Z","dateReserved":"2026-05-30T02:43:33.106Z","dateUpdated":"2026-09-22T13:12:32.859Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-09-21 21:17:03","lastModifiedDate":"2026-09-23 18:30:42","problem_types":["CWE-345","CWE-353","CWE-494","CWE-345 CWE-345: Insufficient Verification of Data Authenticity","CWE-353 CWE-353: Missing Support for Integrity Check","CWE-494 CWE-494: Download of Code Without Integrity Check"],"metrics":{"cvssMetricV31":[{"source":"security-advisories@github.com","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:A/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H","baseScore":7.1,"baseSeverity":"HIGH","attackVector":"ADJACENT_NETWORK","attackComplexity":"HIGH","privilegesRequired":"NONE","userInteraction":"REQUIRED","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"HIGH"},"exploitabilityScore":1.2,"impactScore":5.9}],"ssvcV203":[{"source":"134c704f-9b21-4f2e-91b3-4a467353bcc0","ssvcData":{"timestamp":"2026-09-22T13:12:10.913874Z","id":"CVE-2026-49450","options":[{"exploitation":"poc"},{"automatable":"no"},{"technicalImpact":"total"}],"role":"CISA Coordinator","version":"2.0.3"}}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"49450","Ordinal":"1","Title":"Joplin desktop Windows auto-updater accepts signed installer fro","CVE":"CVE-2026-49450","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"49450","Ordinal":"1","NoteData":"Joplin is an open source note-taking and to-do application that organises notes and lists into notebooks. Prior to 3.7.2, Joplin Desktop for Windows omits publisherName from packages/app-desktop/package.json, so the generated app-update.yml causes NsisUpdater.verifySignature() to skip comparison of a downloaded update's Authenticode signer with Joplin's signer. An attacker who controls the update delivery path can replace the update metadata and installer, and the client accepts an installer signed by another publisher or left unsigned after the user approves installation. Successful exploitation runs attacker-controlled code with the user's privileges and can compromise notes, credentials, and local data. This issue is fixed in version 3.7.2.","Type":"Description","Title":"Joplin desktop Windows auto-updater accepts signed installer fro"}]}}}