Skip to main content

Frappe ERPNext CVE-2026-109653

| EUVDEUVD-2026-98044 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-10-12 VulnCheck GHSA-g9jx-m3gp-q3jv
8.5
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as low-privilege user
  2. Delivery
    Store XSS payload in record field
  3. Exploit
    Privileged user opens affected page
  4. Execution
    Payload executes in victim browser
  5. Impact
    Hijack session for account takeover

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 low-privilege ERPNext account (PR:L) with the ability to create or edit a record whose field is rendered into an HTML attribute context without escaping. The payload is inert until a higher-privileged user passively opens the affected page (UI:P) - this victim interaction is the primary limiting factor, as the attacker cannot self-trigger execution. Affected deployments are ERPNext before 15.119.0 and 16.x before 16.31.0; patched versions are not vulnerable. There is no indication the flaw depends on a non-default configuration - it stems from the default field-rendering behavior.

Impact

This is a credible, actionable priority for organizations running ERPNext, though not an emergency. The provided CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H) scores 8.5 (High): network-reachable, low attack complexity, but it requires an attacker to already hold a low-privilege authenticated account (PR:L) and requires passive victim interaction (UI:P) - a privileged user must open the affected page for the stored payload to fire. No EPSS score was provided in the input, so exploitation-probability modeling cannot be performed. The CVE is NOT listed in CISA KEV and no public exploit or POC is indicated in the references (only vendor/VulnCheck advisories), so there is no evidence of active exploitation. No SSVC decision data was supplied. The signals are internally consistent - a stored XSS leading to account takeover genuinely warrants High, but the dual gating of PR:L plus UI:P means exploitation depends on an insider/low-trust account and a privileged user viewing attacker-controlled data, which moderates real-world urgency relative to an unauthenticated RCE of the same score.

Exploit ScenarioDerived

An attacker with a low-privilege ERPNext account stores a malicious script inside a record field (e.g. a text field that is later rendered into an HTML attribute without escaping). When an administrator or other privileged user opens the page containing that record, the payload executes in their browser session, letting the attacker hijack the session and take over the privileged account. No public POC or exploit code is identified at time of analysis.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 12, 2026

Stored cross-site scripting in Frappe ERPNext allows an authenticated low-privilege user to plant a malicious payload in a record field that is rendered into an HTML attribute context without escaping; the payload executes in the browser of any higher-privileged user who opens the affected page, which can lead to account takeover of that privileged session. Affected deployments are ERPNext before 15.119.0 and 16.x before 16.31.0, with patched releases 15.119.0 and 16.31.0 addressing the flaw. Exploitation requires an authenticated low-privilege account and depends on a victim with greater privileges passively opening the page, which is the primary limiting factor; there is no CISA KEV listing and no public exploit code identified at time of analysis, and no EPSS score was provided, so this should be treated as a credible, actionable priority rather than an emergency.

RemediationAI

Upgrade to a fixed release: ERPNext 15.119.0 or later on the 15.x branch, or 16.31.0 or later on the 16.x branch; vendor-released patch versions are 15.119.0 and 16.31.0, as documented in GitHub advisory GHSA-8pr6-r75h-h8xx (https://github.com/frappe/erpnext/security/advisories/GHSA-8pr6-r75h-h8xx) and the VulnCheck advisory (https://www.vulncheck.com/advisories/frappe-erpnext-before-15.119.0-stored-xss-leading-to-account-takeover). Until the upgrade can be staged, the most effective compensating control is to constrain who can create or edit the record types that render fields into attribute contexts: remove or narrow the relevant create/write role permissions so only trusted administrative users hold them, accepting that this reduces the self-service capability of normal staff. A second option is to apply a Content Security Policy that disallows inline script and restricts script-src to trusted origins for the ERPNext web tier, which will block execution of many injected payloads but carries a real risk of breaking legitimate front-end behavior and requires testing before rollout. Reviewing and escaping field values at render time - or forcing quoting/encoding of the affected attribute context - is the durable code-side fix and should be tracked against the upstream commit. Finally, monitoring and search of existing records for suspicious attribute-breaking characters (quotes, angle brackets, javascript: schemes, event-handler keywords) helps identify already-persisted payloads that would remain dangerous even after the application code is patched; deleting or sanitizing those records is necessary because the version upgrade fixes future rendering, not the stored content. Note that no CISA KEV listing or public exploit code has been identified at time of analysis, so patching should be scheduled through normal risk-based change management rather than emergency response.

Affected VersionsENISA

ERPNext 16.0.0-beta.1 <16.31.0
ERPNext 0 <15.119.0

Affected Packages

euvd erpnext fix: 15.119.0, 16.31.0

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 flaw is a CWE-79 improper neutralization of input during web page generation, specifically a stored (persistent) XSS in which user-controlled record fields are written into an HTML attribute context without output encoding. Attribute contexts are more permissive than HTML text nodes: if a value is placed inside an unquoted attribute, whitespace or quote characters can terminate the attribute and allow injection of new attributes such as event handlers (for example onmouseover/onfocus), and even in quoted attributes a value that is placed into a URL-bearing attribute (href, src, formaction, style) can carry a javascript: or similar scheme payload. Because the malicious content is persisted in the ERPNext record store rather than reflected in a single request, it is executed on every subsequent render of the affected page for each viewer. ERPNext is built on the Frappe framework, a Python/JavaScript stack that drives server-rendered pages from DocType metadata and templating; the vulnerability arises from default field-rendering behavior rather than a non-default configuration, and the provided CPE (cpe:2.3:a:frappe:erpnext) confirms the affected component is ERPNext itself. The supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N) and the independent CVSS 3.1 assessment (AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N) both agree on network reachability, low privileges, victim interaction, and high confidentiality and integrity impact, with the 3.1 assessment assigning changed scope because the injected script acts within the privileged victim's session rather than the attacker's own privileges.

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

Vendor (VulnCheck) PRIMARY 8.5 HIGH
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
vuln.today AI 8.7 HIGH

Low-privilege authenticated attacker stores the payload (PR:L); execution needs a privileged victim to open the page (UI:R); code runs in the victim's browser context (S:C) enabling account takeover (C:H/I:H), with no availability impact.

3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
Passive
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Oct 13, 2026 - 02:16 EUVD
CVE Published
Oct 12, 2026 - 22:22 cve.org
HIGH 8.5

DescriptionCVE.org

Frappe ERPNext before 15.119.0 and 16.x before 16.31.0 contains a stored cross-site scripting vulnerability because record fields are rendered into an HTML attribute context without escaping. A low-privilege user can store a malicious payload in a record field that executes in the browser of any privileged user who opens the affected page, enabling account takeover.

Technical POC Analysis

Evidence note: the only supplied artifact is the GitHub advisory text.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Frappe ERPNext contains a high-severity security flaw that allows a user with limited access to take over the accounts of more privileged users, effectively compromising administrative sessions. This could lead to unauthorized access to sensitive financial, HR, and operational data, as well as disruption of critical business processes. Organizations running unpatched versions of ERPNext should act promptly to mitigate the risk; while no public exploit identified at time of analysis, the potential for significant impact remains.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 90% exploitable
Prevalence
Medium
popular open-source ERP, common in SMBs but not everywhere
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

42
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +42
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

More in Frappe

View all
CVE-2025-67289 CRITICAL POC
9.6 Dec 22

Stored cross-site scripting leading to code execution in Frappe Framework 15.89.0 (and the ERPNext application built on

CVE-2018-3885 HIGH POC
8.8 Sep 12

An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS

CVE-2018-3884 HIGH POC
8.8 Sep 12

An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS

CVE-2018-3883 HIGH POC
8.8 Sep 12

An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS

CVE-2018-3882 HIGH POC
8.8 Sep 12

An exploitable SQL injection vulnerability exists in the authenticated part of ERPNext v10.1.6. Rated high severity (CVS

CVE-2025-66440 HIGH POC
8.8 Dec 15

Authenticated SQL injection in Frappe ERPNext through 15.89.0 allows low-privilege users to extract arbitrary database c

CVE-2025-66439 HIGH POC
8.8 Dec 15

SQL injection in Frappe ERPNext through 15.89.0 lets an authenticated attacker with a valid session and access to the Pa

CVE-2025-66437 HIGH POC
8.8 Dec 15

Authenticated server-side template injection in Frappe ERPNext through 15.89.0 lets a user who can create or modify an A

CVE-2020-6145 HIGH POC
8.8 Aug 10

An SQL injection vulnerability exists in the frappe.desk.reportview.get functionality of ERPNext 11.1.38. Rated high sev

CVE-2026-39352 HIGH POC
8.7 May 20

Arbitrary file read in the Frappe full-stack web application framework allows remote unauthenticated attackers to retrie

CVE-2025-10655 HIGH POC
8.6 Dec 09

SQL injection in Frappe HelpDesk 1.14.0 dashboard functionality allows authenticated attackers to execute arbitrary SQL

CVE-2025-52042 HIGH POC
8.2 Oct 01

In Frappe ERPNext 15.57.5, the function get_rfq_containing_supplier() at erpnext/buying/doctype/request_for_quotation/re

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy