{"schemaVersion":3,"id":"CVE-2026-109662","aliases":[],"status":"published","duplicateOf":null,"title":null,"description":"Frappe ERPNext before 15.112.0 and 16.x before 16.23.0 contains a stored cross-site scripting vulnerability in a public portal form that accepts unauthenticated submissions and stores content later rendered with insufficient neutralisation. Unauthenticated attackers can submit crafted markup that executes in the browser sessions of staff who review the stored record.","dates":{"published":"2026-10-12T22:22:30.244Z","modified":"2026-10-14T12:37:39.019Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":6.1,"severity":"medium","version":"3.1","versionLabel":"v3.1","source":"NVD","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","computed":false,"selection":"backend-summary"},"metrics":[{"version":"4.0","versionLabel":"v4.0","source":"NVD","score":5.3,"severity":"medium","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/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":6.1,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","exploitability":null,"impact":null,"computed":false},{"version":"4.0","versionLabel":"v4.0","source":"CVE.org","score":5.3,"severity":"medium","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"CVE.org","score":6.1,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.00205,"percentile":0.0992,"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.00205,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00205,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00205,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00205,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00205,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00205,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00205,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00205,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.00205,"percentile":0.0992}],"last30":[{"date":"2026-10-13T00:00:00.000Z","score":0.00205,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00205,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00205,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00205,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00205,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00205,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00205,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00205,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.00205,"percentile":0.0992}]},"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-79","name":"Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')","description":"The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.","type":"weakness","status":"Stable","abstraction":"Base","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/79.html"}],"affected":[{"vendor":"frappe","product":"erpnext","name":"erpnext","label":"erpnext","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 15.112.0","noFixRecorded":false,"fixedIn":null},{"text":"≥ 16.0.0-beta.1, < 16.23.0","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 15.112.0 | ≥ 16.0.0-beta.1, < 16.23.0","eol":null,"hubHref":"/vendor/frappe/erpnext"}],"affectedCount":1,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/frappe/erpnext/security/advisories/GHSA-4rfh-2hfg-9m7w","label":"github.com/frappe/erpnext/security/advisories/GHSA-4rfh-2hfg-9m7w","hostname":"github.com","tags":["Vendor Advisory"]},{"url":"https://www.vulncheck.com/advisories/frappe-erpnext-before-15.112.0-stored-xss-via-public-portal-form","label":"www.vulncheck.com/advisories/frappe-erpnext-before-15.112.0-stored-xss-via-public-portal-form","hostname":"www.vulncheck.com","tags":["Third Party Advisory"]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":[]},"timeline":[{"kind":"published","date":"2026-10-12T22:22:30.244Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-10-14T12:37:39.019Z","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-22T05:45:35.599Z","stale":false,"partial":false}}