Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to ERPNext with low-privileged account
-
DeliveryInject script payload into a record name
-
ExploitPrivileged user opens affected dashboard/tool/portal
-
ExecutionScript executes in victim browser
-
ImpactSteal session token and 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 or rename records whose names are later rendered on certain ERPNext dashboards, tools, or portal pages (PR:L). Exploitation is a stored/second-order XSS, so it only triggers when a victim - ideally a privileged user - views the page that renders the unneutralized record name (UI:P/passive interaction), meaning the attacker cannot control exact timing. Limiting factors: a valid low-privilege login is mandatory, the payload only fires against users who open the specific affected views, and installations on versions 15.103.0+ or 16.12.0+ are not vulnerable. |
| Impact | This is a credible, above-average-priority issue but not an emergency. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H) scores 8.5 (High) and is internally consistent with a stored XSS flaw: network-reachable, low complexity, but requiring low-privilege authentication (PR:L) and passive victim interaction (UI:P) - a victim must view an affected dashboard/tool/portal. These two gating factors (authentication plus required victim view) meaningfully lower real-world risk versus an unauthenticated, no-interaction RCE. No EPSS score, KEV listing, or POC was provided, so there is no public exploit identified at time of analysis and no evidence of active exploitation; exploitation probability signals are simply absent rather than contradictory. The highest-value outcome is session/token theft against privileged users, which can escalate to broad data access and modification - so impact is high even though the barrier to entry (a valid account that can name records) is moderate. Net: a real patching priority for internet-facing or multi-tenant ERPNext deployments, but it depends on an attacker already having an authenticated foothold, so it reads as elevated-but-not-critical absent exploitation evidence. |
| Exploit ScenarioDerived | A low-privileged but authenticated ERPNext user (or a malicious tenant/vendor/customer with portal access) creates or renames a record using a name containing a malicious script payload. When a privileged user - such as a System Manager or Accounts Manager - later opens a dashboard, tool, or portal page that renders that record name without proper neutralization, the script executes in their browser, allowing session token theft and actions performed as the victim. No public exploit code was identified at time of analysis, so this would currently require custom payload development. |
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 an authenticated user with permission to create or rename records to plant script payloads in record names that are later rendered without proper neutralization on certain dashboards, tools, and portal pages. Versions before 15.103.0 and 16.x before 16.12.0 are affected; the vulnerability scores CVSS 4.0 8.5 (AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:N) and the independent assessment rates it a credible, above-average-priority issue rather than an emergency, because a valid low-privilege login is mandatory, the payload only fires when a victim - ideally a privileged user - opens the specific affected view, and the attacker cannot control exact timing. Successful exploitation can read or modify data and steal session tokens from other users' browsers; no public exploit code or confirmed active exploitation (CISA KEV) was identified at time of analysis. Installations running 15.103.0+ or 16.12.0+ are not vulnerable.
RemediationAI
Vendor-released patch: upgrade ERPNext to 15.103.0 (15.x branch) or 16.12.0 (16.x branch) or later, following the vendor advisory at https://github.com/frappe/erpnext/security/advisories/GHSA-r99h-h44m-89m2 and the VulnCheck advisory at https://www.vulncheck.com/advisories/frappe-erpnext-before-16.12.0-stored-xss-via-crafted-record-names. Where immediate upgrade is impractical, reduce the attack surface by tightening Frappe role permissions so that only trusted roles can create or rename records in the DocTypes whose names render on dashboards, tools, and portal pages - accepting that this degrades normal self-service and bulk-import workflows - and by restricting portal/dashboard exposure to authenticated, vetted users; additionally, hunt for and correct any existing stored payloads by scanning record-name values for HTML/script characters and HTML-encoding on output (for example via frappe.utils.escape_html or equivalent context-aware escaping) until the patched release can be deployed. Deploying a strict Content-Security-Policy that forbids inline and untrusted script sources can blunt script execution but requires careful tuning against ERPNext's own front-end assets and should be treated as a compensating control, not a substitute for the upgrade; because the injected payload persists in the database, patching the rendering path alone does not remove previously planted names, so test the affected views after upgrading and after any cleanup.
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 a Python/JavaScript web application built on the Frappe framework, where documents are stored as DocTypes and identified by a 'name' field generated through naming rules. This is a classic stored (second-order) XSS, CWE-79: the record name is persisted in the database and later injected into HTML output on dashboards, tools, and portal pages without output encoding or context-aware escaping, so the browser parses the attacker-supplied markup as script rather than text. The CVSS 4.0 vector 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 confirms a network-reachable, low-complexity attack that requires a low-privileged authenticated account (PR:L) and passive victim interaction (UI:P), with high confidentiality and integrity impact on the vulnerable system but no availability impact and no subsequent-system impact. The independent assessment using CVSS:3.1 (AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N) agrees on scope change and high C/I impact, reinforcing that the flaw lives in a rendering path reachable from multiple ERPNext modules rather than in a single isolated endpoint. The CPE cpe:2.3:a:frappe:erpnext:*:*:*:*:*:*:*:* indicates the vulnerability is tracked generically across the ERPNext product line, so version pinning to 15.103.0 or 16.12.0 is the decisive discriminator for exposure.
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 gives PR:L, victim must view the page so UI:R, stored script runs in the victim's browser context (S:C) enabling token theft and data modification (C:H/I:H), no availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
Frappe ERPNext before 15.103.0 and 16.x before 16.12.0 contains a stored cross-site scripting vulnerability because the names of certain records are not properly neutralized when rendered on some dashboards, tools, and portals. Authenticated attackers can craft malicious record names that execute scripts in other users' browsers, enabling data access, modification, and token theft, especially against privileged users.
Technical POC Analysis
Bug class: CWE-79, stored/persistent cross-site scripting.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Frappe ERPNext, a widely used open-source ERP platform, is affected by a high-severity stored cross-site scripting vulnerability that enables an authenticated low-privilege user to inject malicious scripts into records, potentially compromising sensitive data and user sessions, including those of privileged users. While exploitation requires a valid login and user interaction, and no public exploit has been identified at time of analysis, the potential for data theft and unauthorized access makes timely remediation critical for organizations running affected versions.
Apply vendor patch.
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-98064
GHSA-82qc-4rqg-p3g8
NVD
CVE.org
EPSS
Exploit-DB