Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege record-creating user
-
DeliveryStore crafted record name with script payload
-
ExploitVictim opens vulnerable report view
-
ExecutionUnescaped name interpolated into markup
-
PersistScript executes in victim session
-
ImpactHijack session / exfiltrate ERP data
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 | Exploitation requires an authenticated ERPNext account with permission to create records (PR:L), so it is not remote-unauthenticated; the attacker stores a malicious payload in a record's name field. Execution is further gated on a second user opening the specific report view that interpolates stored record names into markup without escaping (UI:P) - the payload lies dormant until then. Limiting factors: the attacker needs valid credentials and create-record rights, impact scales with the privilege of whichever user opens the report, and only the vulnerable report view path is affected. Affected deployments are ERPNext before 15.120.0 and 16.x before 16.33.0; patched versions remove the exposure. |
| Impact | This is a credible, moderately-high priority issue rather than an inflated high-CVSS score. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H) correctly reflects a stored XSS: network-reachable, low complexity, but gated by PR:L (the attacker must be an authenticated user permitted to create records) and UI:P (a victim must later open the affected report). The VC:H/VI:H rating is justified because script executing in a victim's ERPNext session - especially an administrator or finance user - can drive session hijacking, data exfiltration, and record manipulation across the ERP. No EPSS score, SSVC decision, KEV listing, or POC is present in the supplied data, so no public exploit identified at time of analysis and there is no evidence of active exploitation; the real-world urgency therefore rests on the plausibility of an insider or low-privilege account being used to plant the payload. Signals are internally consistent (no CVSS-vs-description conflict), but the absence of EPSS/KEV/POC means exploitation likelihood cannot be quantified from this input - treat the risk as 'needs patching promptly in multi-tenant or large-user ERPNext deployments' rather than 'emergency internet-facing RCE.' |
| Exploit ScenarioDerived | A low-privileged but authenticated ERPNext user (or a compromised/rogue account) creates a record whose name field contains a crafted JavaScript payload. When a higher-privileged user such as an administrator later opens the report view that interpolates that record name into markup without escaping, the script executes in the victim's authenticated session, enabling session token theft or actions performed as that user. No public exploit code is identified in the provided data, and successful attack requires the victim to open the affected report (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 allows any authenticated user with permission to create records to plant a crafted record name that is later rendered unescaped in a report view, executing arbitrary script in the browser session of whichever user opens that report. Exploitation is not remote-unauthenticated: it requires valid credentials plus create-record rights (CVSS 4.0 PR:L) and is further gated on a second user subsequently opening the vulnerable report (UI:P), meaning the payload lies dormant until then. Impact spans the confidentiality and integrity of the affected session and can be severe when a high-privileged administrator views the report; no public exploit code has been identified at time of analysis and there is no CISA KEV listing, though the issue is rated 8.5 and warrants prompt patching.
RemediationAI
Vendor-released patch: upgrade to ERPNext 15.120.0 or 16.33.0 (the first fixed release on each maintained branch), per the GitHub security advisory GHSA-f99r-gp2w-xghj; applying the vendor fix is the only remediation that eliminates the unescaped interpolation in the report view. Where immediate upgrade is not possible, reduce exposure by tightening who can create records whose names are rendered in reports - restrict DocType create/write permissions to trusted roles and audit existing record names for HTML or script fragments, accepting that this is a permission-hygiene measure rather than a code fix and that it may disrupt legitimate data entry. A Content-Security-Policy that disallows inline and third-party script execution from ERPNext responses can blunt payload execution, but it will break legitimate inline scripts and requires careful, tested tuning. Because the payload is stored and dormant, cleaning already-persisted malicious record names is also necessary after patching; the primary risk is a privileged user opening the affected report before remediation, so prioritize the upgrade and record-name audit accordingly.
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
ERPNext is the flagship open-source ERP built on the Frappe framework, whose server-side templating and report rendering engine composes HTML from stored document fields such as record names. In the vulnerable report view, those stored names are interpolated into server-rendered markup without HTML entity encoding, so any attacker-controlled record name is treated as trusted markup rather than data - the classic stored/persistent variant of CWE-79 (Improper Neutralization of Input During Web Page Generation). The CPE cpe:2.3:a:frappe:erpnext:*:*:*:*:*:*:*:* carries wildcarded version fields, so version-specific scoping must come from the vendor advisory rather than the CPE string. The independent assessment maps the flaw to CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N, confirming a network-reachable, low-complexity attack that requires authenticated low privileges and user interaction, with changed scope because the script executes in the victim's session context rather than the attacker's - a direct consequence of storing and later replaying untrusted markup server-side.
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 low-priv attacker stores payload (PR:L), victim must open the report (UI:R), and XSS executing in another user's session crosses a trust boundary (S:C) with high confidentiality/integrity impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
Frappe ERPNext before 15.120.0 and 16.x before 16.33.0 contains a stored cross-site scripting vulnerability in a report view that interpolates stored record names into markup without escaping. Authenticated users able to create records can store crafted record names that execute script in the session of any user who later opens the report.
Executive ViewAI
A stored cross-site scripting flaw in Frappe ERPNext (CVE-2026-109612, CVSS 8.5) lets any authenticated user who can create records plant malicious content that executes in the browser of a colleague who later opens an affected report. Because ERPNext reports are routinely viewed by administrators and finance staff, a successful attack could compromise a privileged session and expose or alter sensitive business data. No vendor patch or public exploit code is currently available, so risk must be managed through access restrictions and monitoring until a fix ships.
No vendor-released patch identified at time of analysis. Interim mitigations: enforce least-privilege role assignments to limit who can create records and view reports, apply output encoding or sanitization in report templates where possible, deploy a restrictive content security policy, add WAF rules targeting script payloads in record names, shorten privileged session lifetimes with re-authentication, and monitor report-view and record-creation activity for suspicious entries.
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-98006
GHSA-vv7g-r4vw-8r7p
NVD
CVE.org
EPSS
Exploit-DB