Skip to main content

Frappe Framework CVE-2026-81731

| EUVDEUVD-2026-67236 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-08-27 VulnCheck GHSA-8fp2-5hmm-fgqh
5.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Recon
    Acquire Workspace Manager role
  2. Delivery
    Inject XSS payload into workspace link description
  3. Exploit
    Victim desk user opens workspace
  4. Install
    Victim hovers card triggering Bootstrap popover
  5. C2
    Browser executes injected script
  6. Execute
    Session token exfiltrated to attacker
  7. Impact
    Attacker impersonates victim via authenticated API calls

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 the attacker to hold the Workspace Manager role within the Frappe instance - a standard desk role distinct from System Manager, commonly assigned to power users who customize workspaces. The targeted workspace must be configured as a public workspace so that higher-privileged desk users encounter the injected card. Victim interaction is mandatory: the target user must open the workspace and hover over the specific card whose description contains the payload, triggering the Bootstrap popover rendering. There is no exploit path through the guest or portal interface; the attack is confined to authenticated desk users. The vulnerability is version-bounded to 15.11.0-16.32.0; instances running the development branch with the fix commit applied are not affected. No special network position, operating system, or database backend is required - the entire attack is delivered through standard Frappe desk HTTP interactions.

Impact

The CVSS 4.0 score of 5.1 (Medium) correctly captures the attack profile: network-accessible (AV:N), low complexity (AC:L), requiring low privileges (PR:L - Workspace Manager role), and passive victim interaction (UI:P - hover to trigger popover). The impacts are bounded at VC:L/VI:L for the victim system and SC:L/SI:L for the subsequent system (attacker gains victim session). EPSS data is not provided in the available intelligence, so exploitation probability cannot be quantified. CISA KEV status is not referenced, meaning active exploitation is unconfirmed at time of analysis. Despite the moderate CVSS score, the real-world risk warrants elevated priority for two compounding reasons: (1) the Workspace Manager role is a routine desk role assigned to non-administrator users in many Frappe deployments, lowering the attacker prerequisite bar significantly, and (2) no released patch exists - all deployed 15.x and 16.x instances remain vulnerable with no vendor-released upgrade path. The victim's session may belong to a System Manager or administrator, amplifying the realized impact well beyond the stored-XSS base score. The UI:P requirement prevents fully automated mass exploitation but does not meaningfully protect against a deliberate insider or compromised-account attack where workspace poisoning is persistent.

Exploit ScenarioDerived

A Frappe user with the Workspace Manager role edits a public workspace and sets the description of a workspace link card to a JavaScript payload such as a cookie-exfiltration script targeting frappe.boot.user.sid. When a System Manager later opens the same workspace and hovers over the card, the Bootstrap popover renders the injected HTML and the script executes in the System Manager's browser session, transmitting their session token to an attacker-controlled server. The attacker replays the token to call authenticated Frappe REST API endpoints as the System Manager, creating new administrator accounts or exfiltrating sensitive business data.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.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 – Aug 27, 2026

Stored XSS in Frappe's workspace link description feature (versions 15.11.0-16.32.0) allows any user holding the Workspace Manager role to inject arbitrary JavaScript into a public workspace card, which executes in the browser session of any desk user who opens the workspace and hovers over the card description. The attack path reaches higher-privileged users through shared public workspaces, enabling session token theft and impersonation via authenticated API requests as the victim. No released version carries the fix; the upstream correction exists only on the development branch per commit 9f65e5ceca71aae91dcfd9bb3c0904afd386a01a, leaving all 15.x and 16.x deployments exposed.

RemediationAI

The upstream fix is commit 9f65e5ceca71aae91dcfd9bb3c0904afd386a01a (https://github.com/frappe/frappe/commit/9f65e5ceca71aae91dcfd9bb3c0904afd386a01a), which removes "ignore_xss_filter": 1 from workspace_link.json, allowing _sanitize_content() to process the description field normally. Because no tagged release incorporates this fix, operators should monitor the Frappe GitHub repository (https://github.com/frappe/frappe) and upgrade to the first release that includes this commit. As an interim compensating control, immediately audit and restrict assignment of the Workspace Manager role to the smallest possible set of trusted users - this directly limits who can author malicious workspace descriptions, though it does not eliminate the underlying code-level flaw. Operators should also review all existing workspace link descriptions for injected HTML or script tags, particularly on public workspaces. Disabling public workspaces entirely removes the attack surface but disrupts shared desk navigation for teams. Applying the commit as a manual patch to workspace_link.json in the running installation is feasible if the deployment supports it, but operators should verify that the framework's doctype migration process correctly picks up the JSON change.

Affected VersionsENISA

frappe 15.11.0 ≤16.32.0

Affected Packages

euvd frappe no fix

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

Frappe is a low-code Python/JavaScript web framework (CPE: cpe:2.3:a:frappe:frappe) that underpins ERPNext and other applications. The vulnerability traces to a deliberate but unsafe configuration: the description field of the Workspace Link doctype is marked "ignore_xss_filter": 1 in frappe/desk/doctype/workspace_link/workspace_link.json, which causes the server-side sanitization routine _sanitize_content() in frappe/model/base_document.py to skip that field entirely on save. The raw, unsanitized value is subsequently returned verbatim by frappe.desk.desktop.get_desktop_page. On the client side, LinksWidget.set_body() in frappe/public/js/frappe/widgets/links_widget.js passes the description through the __() translation helper (which performs no HTML escaping) and interpolates the result into a Bootstrap popover constructed with html: true - the critical jQuery/Bootstrap option that instructs the library to parse and render the popover content as raw HTML rather than as plain text. CWE-79 (Stored Cross-Site Scripting) is the root cause: user-controlled input is stored without sanitization and later rendered in a context where scripts execute.

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 5.1 MEDIUM
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
vuln.today AI 5.4 MEDIUM

Workspace Manager role required (PR:L), victim hover triggers popover (UI:R), session of a different user is compromised (S:C), no availability impact.

3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
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 (VulnCheck).

CVSS VectorVendor: VulnCheck

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

DescriptionCVE.org

Frappe 15.11.0 through 16.32.0 stores and renders the workspace card description without XSS filtering. The description field of the Workspace Link doctype is declared with "ignore_xss_filter": 1 in frappe/desk/doctype/workspace_link/workspace_link.json, and _sanitize_content() in frappe/model/base_document.py skips any field carrying that flag, so the value is stored exactly as submitted. frappe.desk.desktop.get_desktop_page returns it unchanged, and LinksWidget.set_body() in frappe/public/js/frappe/widgets/links_widget.js interpolates it into a Bootstrap popover created with html: true, by way of the __() translation helper, which performs no HTML escaping. A user holding the Workspace Manager role can therefore place arbitrary markup in a public workspace's card description and have it execute in the session of any desk user who opens that workspace and hovers the description, including higher-privileged users, allowing session token theft and authenticated requests as the victim. The flag is removed on the development branch but remains present in the shipped 15.x and 16.x release lines, so no released version carries the fix.

Threat Intelligence Overview

EPSS Score
0.2%
Top 93% exploitable
Prevalence
Medium
Frappe powers ERPNext, widely used in mid-market enterprises globally
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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

26
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
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