Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAuthenticate to ERPNext with low-privilege account
-
DeliveryOpen Customer record with edit access
-
ExploitInject XSS payload into email_id or mobile_no field
-
InstallSave poisoned record to database
-
C2POS operator selects affected customer in POS interface
-
ExecutePayload executes in operator browser context
-
ImpactExfiltrate session token or manipulate POS UI
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 write access to Customer records - specifically permission to modify the email_id or mobile_no fields (confirmed by PR:L in the CVSS 4.0 vector). The vulnerability is triggered in the Point of Sale (POS) module specifically: payload execution occurs only when a POS operator selects the poisoned customer during a transaction, meaning at least one POS operator session must interact with that customer record (UI:P). The affected deployment must be running ERPNext version 16.16.0 and have the POS module active with the standard Customer lookup enabled. Limiting factors include: the attacker cannot be anonymous - a valid ERPNext login with Customer write permissions is mandatory; the payload does not execute server-side or via direct URL access - it requires the POS operator to perform the customer selection UI action; and the impact is scoped to the operator's browser session (no server compromise or availability impact). There is no requirement for a non-default configuration beyond having the POS module in use, which is standard for retail and front-desk ERPNext deployments. |
| Impact | The CVSS 4.0 score of 5.1 (Medium) accurately reflects a constrained but realistic threat: the attack is network-accessible (AV:N), low complexity (AC:L), requires no special attack conditions (AT:N), but does demand a low-privileged authenticated account (PR:L) and passive user interaction from a POS operator (UI:P). Confidentiality and integrity impacts are rated Low on both the vulnerable system and downstream scope (VC:L/VI:L/SC:L/SI:L), with no availability impact. The stored nature of the XSS is the most significant real-world risk amplifier: the payload persists and fires for every operator who encounters the customer, whereas reflected XSS requires per-victim delivery. In environments with high POS transaction volume, a single injection could compromise many operator sessions. The primary attacker prerequisite - a valid account with Customer record write access - limits opportunistic exploitation but is plausible for insider threat, compromised low-privilege accounts, or overly permissive role assignments common in SMB ERP deployments. EPSS data is absent from available sources, and no KEV listing exists, indicating no confirmed widespread exploitation. The score is appropriate and should not be dismissed solely on its Medium classification given the persistence characteristic. |
| Exploit ScenarioDerived | An authenticated ERPNext user with Customer record edit access - such as a sales clerk, data entry operator, or compromised low-privilege account - saves a payload such as |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 03, 2026
Stored cross-site scripting in ERPNext 16.16.0 allows authenticated users to inject arbitrary HTML and JavaScript into the email_id or mobile_no fields of Customer records, which execute silently in the browser of every Point of Sale (POS) operator who subsequently selects the poisoned customer. Because the payload persists in the database, a single injection event affects all future POS operator sessions that encounter that customer - creating a multiplier effect without requiring repeated attacker access. No public exploit code or CISA KEV listing exists at time of analysis; EPSS data was not provided in available intelligence sources.
RemediationAI
The primary remediation is to upgrade ERPNext beyond version 16.16.0 once a patched release is published by Frappe Technologies; as of this analysis, no specific fixed version has been confirmed - the upstream repository at https://github.com/frappe/erpnext and the Fluid Attacks advisory at https://fluidattacks.com/es/advisories/weeknd should be monitored for patch availability and associated release notes. As an immediate compensating control, administrators should audit and restrict Customer record write permissions (specifically the ability to edit email_id and mobile_no fields) to the minimum set of trusted roles, reducing the pool of accounts capable of injecting payloads - note this adds administrative overhead for legitimate customer data updates. Server-side input validation rejecting HTML special characters (<, >, &, ", ') on the email_id and mobile_no fields can block the injection vector without affecting legitimate email addresses or phone numbers, though this must be enforced at the application layer rather than client-side alone. Additionally, deploying a Content Security Policy (CSP) header that blocks inline script execution in the POS interface would prevent payload execution even if injection occurs, but this requires testing against ERPNext's own JavaScript dependencies to avoid breaking POS functionality.
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 an open-source enterprise resource planning platform built on the Frappe framework (CPE: cpe:2.3:a:frappe:erpnext). The vulnerability is a stored (persistent) variant of CWE-79 (Improper Neutralization of Input During Web Page Generation - Cross-Site Scripting). User-supplied data submitted to the email_id and mobile_no fields of Customer records is written to the database without adequate sanitization and is subsequently rendered in the Point of Sale interface without output encoding. When the POS module resolves a customer lookup, the raw field values are injected directly into the DOM, causing any embedded HTML or JavaScript to execute in the victim operator's browser. This is distinct from reflected XSS in that no crafted link needs to be delivered to the victim - the payload fires automatically whenever the affected customer record is accessed in the POS context.
Know when Erpnext 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:L/VI:L/VA:N/SC:L/SI:L/SA:N
Primary rating from Vendor (Fluid Attacks) · only source for this CVE.
CVSS VectorVendor: Fluid Attacks
Lifecycle Timeline
2DescriptionCVE.org
An authenticated user can persist arbitrary HTML/JavaScript in the email_id or mobile_no fields of a Customer record and trigger unescaped rendering in the Point of Sale (POS) interface for every operator who selects that customer. This issue affects ERPNext: 16.16.0.
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 attackers with permission to create or modify Print Format documents in Frappe ERPNext through 15.89.0 can
Authenticated server-side template injection in Frappe ERPNext through 15.89.0 lets a user who can create or modify an A
Authenticated server-side template injection in Frappe ERPNext through 15.89.0 allows users with privileges to configure
An SQL injection vulnerability exists in the frappe.desk.reportview.get functionality of ERPNext 11.1.38. Rated high sev
Frappe Framework ERPNext 13.4.0 contains a sandbox escape vulnerability in RestrictedPython that allows authenticated us
EUVD-2026-34157
GHSA-w2pq-xvqr-7fqw
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB