Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAcquire Workspace Manager role
-
DeliveryInject XSS payload into workspace link description
-
ExploitVictim desk user opens workspace
-
InstallVictim hovers card triggering Bootstrap popover
-
C2Browser executes injected script
-
ExecuteSession token exfiltrated to attacker
-
ImpactAttacker 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 |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
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
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
Workspace Manager role required (PR:L), victim hover triggers popover (UI:R), session of a different user is compromised (S:C), no availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
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
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-67236
GHSA-8fp2-5hmm-fgqh
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB