{"schemaVersion":3,"id":"CVE-2023-54409","aliases":[],"status":"published","duplicateOf":null,"title":null,"description":"Frappe before 13.46.1 and 14.x before 14.20.0 contains a cross-site scripting vulnerability because the html2text function weakly sanitizes user input. Authenticated attackers can supply crafted HTML that is insufficiently sanitized by html2text, executing scripts in the browsers of users who view the rendered content.","dates":{"published":"2026-10-12T22:21:41.415Z","modified":"2026-10-13T13:33:19.267Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":5.9,"severity":"medium","version":"4.0","versionLabel":"v4.0","source":"NVD","vector":"CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:P/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","computed":false,"selection":"backend-summary"},"metrics":[{"version":"4.0","versionLabel":"v4.0","source":"NVD","score":5.9,"severity":"medium","vector":"CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:P/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"NVD","score":4.8,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:N/A:N","exploitability":null,"impact":null,"computed":false},{"version":"4.0","versionLabel":"v4.0","source":"CVE.org","score":5.9,"severity":"medium","vector":"CVSS:4.0/AV:N/AC:H/AT:P/PR:L/UI:P/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"CVE.org","score":4.8,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:H/I:N/A:N","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.00224,"percentile":0.12242,"severity":"low","asOf":"2026-10-21T00:00:00.000Z","change":{"pp":null,"baselineDate":null,"baselineScore":null},"history":[{"date":"2026-10-13T00:00:00.000Z","score":0.00224,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00224,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00224,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00224,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00224,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00224,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00224,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00224,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.00224,"percentile":0.12242}],"last30":[{"date":"2026-10-13T00:00:00.000Z","score":0.00224,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00224,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00224,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00224,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00224,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00224,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00224,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00224,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.00224,"percentile":0.12242}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[],"exploitCount":0,"weaknesses":[{"id":"CWE-80","name":"Improper Neutralization of Script-Related HTML Tags in a Web Page (Basic XSS)","description":"The product receives input from an upstream component, but it does not neutralize or incorrectly neutralizes special characters such as \"<\", \">\", and \"&\" that could be interpreted as web-scripting elements when they are sent to a downstream component that processes web pages.","type":"weakness","status":"Incomplete","abstraction":"Variant","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/80.html"}],"affected":[{"vendor":"frappe","product":"frappe","name":"frappe","label":"frappe","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 13.46.1","noFixRecorded":false,"fixedIn":null},{"text":"≥ 14.0.0-beta.1, < 14.20.0","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 13.46.1 | ≥ 14.0.0-beta.1, < 14.20.0","eol":null,"hubHref":"/vendor/frappe/frappe"}],"affectedCount":1,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/frappe/frappe/security/advisories/GHSA-wp7j-3w22-93j6","label":"github.com/frappe/frappe/security/advisories/GHSA-wp7j-3w22-93j6","hostname":"github.com","tags":["Vendor Advisory"]},{"url":"https://www.vulncheck.com/advisories/frappe-before-13.46.1-xss-via-html2text-weak-sanitization","label":"www.vulncheck.com/advisories/frappe-before-13.46.1-xss-via-html2text-weak-sanitization","hostname":"www.vulncheck.com","tags":["Third Party Advisory"]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":[]},"timeline":[{"kind":"published","date":"2026-10-12T22:21:41.415Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-10-13T13:33:19.267Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":24,"level":"low","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-22T07:13:48.363Z","stale":false,"partial":false}}