Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege ERPNext user
-
DeliveryCreate record with script payload in name
-
ExploitVictim opens vulnerable tool view
-
ExecutionStored markup interpolated unescaped
-
PersistScript executes in victim session
-
ImpactHijack session / act as victim
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated account with permission to create the affected record type in Frappe ERPNext (versions before 15.112.0, or 16.x before 16.23.0), so exploitation is limited to insiders or attackers who have already obtained valid low-privilege credentials. The attacker must set a malicious record name, and the payload only executes when a second user subsequently opens the specific vulnerable tool view that interpolates stored record names into markup without escaping - meaning victim interaction is mandatory and no execution occurs until the tool is opened. Limiting factors: no unauthenticated path, required create-permission, and dependence on a victim navigating to the affected tool. |
| Impact | This is a moderate-priority, authentication-gated stored XSS (CWE-79) rather than a drop-everything emergency. The supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H) scores 8.5 and signals network reach with low attacker privilege, but two factors temper real-world urgency: PR:L means the attacker must already be an authenticated ERPNext user who can create the affected records, and UI:P means exploitation only fires when another user passively opens the affected tool view. No EPSS score, CISA KEV listing, or public POC is present in the provided data, so there is no public exploit identified at time of analysis and no evidence of active exploitation. The VC:H/VI:H impact rating in the input appears aggressive for a reflected-in-session XSS; stored XSS typically yields partial confidentiality/integrity loss scoped to the victim's authenticated session rather than full system compromise, so defenders should treat the 8.5 as an upper bound. Net: a credible insider or low-privilege account-takeover vector worth patching in normal cycles, not a widely-weaponized remote-unauth flaw. |
| Exploit ScenarioDerived | A low-privileged but authenticated ERPNext user creates a record (e.g., a document whose name is attacker-controlled) and embeds a malicious script payload in its name field. When an administrator or other user later opens the vulnerable tool view, the unescaped record name is interpolated into the page markup and the script executes in that victim's authenticated session, enabling session theft or actions on their behalf. No public exploit code was identified in the provided data, and success depends on a victim opening the affected tool (UI:P). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 12, 2026
Stored cross-site scripting in Frappe ERPNext versions before 15.112.0 and 16.x before 16.23.0 allows an authenticated user who can create the affected record type to embed script in a record name, which is then interpolated unescaped into markup by a tool view and executed in the browser session of any user who later opens that tool. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:P) and our independent CVSS 3.1 assessment (AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N) agree that exploitation is authentication-gated at low privileges and depends on victim interaction, making this a moderate-priority, insider-reachable issue rather than an unauthenticated emergency; no public exploit code and no confirmed active exploitation were identified at time of analysis. Because the payload persists in stored data, a single malicious record name can affect every user who subsequently visits the vulnerable tool view, so scope is limited to session-level script execution in the victim's context rather than direct server compromise.
RemediationAI
Upgrade to the vendor-fixed releases: ERPNext 15.112.0 on the 15.x branch or 16.23.0 on the 16.x branch, following the guidance in the GitHub security advisory GHSA-734c-hv9r-mg2c and the VulnCheck advisory (links above). If immediate upgrade is not possible, reduce exposure by tightening who can create the affected record types - applying least privilege to doctype create permissions removes the attacker's ability to plant a malicious name, at the cost of restricting legitimate data-entry workflows - and restrict access to the specific vulnerable tool view to trusted roles; additionally, review existing record names for injected markup and clean or rename suspicious records before patching, since remediation of the software does not remove already-stored payloads. A content security policy on the ERPNext front end can blunt script execution as a temporary compensating control, but may break legitimate inline scripts and should be tested in a staging environment first. The official vendor-released patch version is 15.112.0 / 16.23.0; no vendor-released patch exists for the deprecated branches below those versions, so affected deployments on those lines should be upgraded to a supported release rather than relying on a backport.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation), specifically the stored/persistent variant: a tool view within ERPNext renders stored record names directly into HTML markup without output encoding or contextual escaping. ERPNext is a Frappe Framework-based open-source ERP/CRM platform whose doctype records (with user-supplied names) are commonly displayed in list and tool views, so the vulnerable sink is a presentation-layer template rather than a data-layer or authentication component. The CVSS 4.0 vector reports AV:N/AC:L/AT:N/PR:L/UI:P with high confidentiality and integrity impact confined to the vulnerable system (VC:H/VI:H, VA:N, SC:N/SI:N/SA:N), consistent with script execution obtaining read/write access to the victim's session within ERPNext; our independent CVSS 3.1 view scores scope as changed (S:C) with low C/I impact, reflecting that injected script runs in the victim's browser origin. The affected CPE is cpe:2.3:a:frappe:erpnext for the ERPNext product, with the vulnerable version ranges being all releases before 15.112.0 and 16.x releases before 16.23.0.
Know when Frappe gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N
Authenticated record creation forces PR:L; victim must open the tool (UI:R); script crosses into the victim's session (S:C) with partial confidentiality/integrity impact typical of stored XSS, no availability effect.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
Frappe ERPNext before 15.112.0 and 16.x before 16.23.0 contains a stored cross-site scripting vulnerability because a tool view interpolates stored record names into markup without escaping. An authenticated user able to create such records can give them malicious names, executing script in the session of any user who later opens that tool.
Executive ViewAI
Frappe ERPNext, a widely used open-source ERP platform, contains a stored cross-site scripting vulnerability (CVE-2026-109604) that allows an authenticated low-privileged user to inject persistent malicious script into record names, which then executes in the browser sessions of any user who opens the affected tool view. This insider-reachable issue requires no public exploit and is not actively exploited, but it can lead to session hijacking, data theft, or lateral movement within the ERP environment, affecting all users who interact with the compromised records. Leadership should prioritize remediation because the vulnerability persists in stored data and can silently compromise multiple user accounts, undermining trust in the ERP system's data integrity and confidentiality.
No vendor patch available; implement input sanitization and output encoding for record names, restrict record creation permissions to trusted users, deploy Content Security Policy (CSP), and monitor for injected script patterns.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
Stored cross-site scripting leading to code execution in Frappe Framework 15.89.0 (and the ERPNext application built on
An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS
An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS
An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS
An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS
Authenticated SQL injection in Frappe ERPNext through 15.89.0 allows low-privilege users to extract arbitrary database c
SQL injection in Frappe ERPNext through 15.89.0 lets an authenticated attacker with a valid session and access to the Pa
Authenticated server-side template injection in Frappe ERPNext through 15.89.0 lets a user who can create or modify an A
An SQL injection vulnerability exists in the frappe.desk.reportview.get functionality of ERPNext 11.1.38. Rated high sev
Arbitrary file read in the Frappe full-stack web application framework allows remote unauthenticated attackers to retrie
SQL injection in Frappe HelpDesk 1.14.0 dashboard functionality allows authenticated attackers to execute arbitrary SQL
In Frappe ERPNext 15.57.5, the function get_rfq_containing_supplier() at erpnext/buying/doctype/request_for_quotation/re
EUVD-2026-98001
GHSA-frw3-f8vj-wxg9
NVD
CVE.org
EPSS
Exploit-DB