Frappe CRM
CVE-2025-68928
MEDIUM
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privileged CRM user
-
DeliveryStore javascript: payload in organization website field
-
ExploitVictim opens record and clicks website link
-
Executionwindow.open executes script in victim session
-
ImpactHijack session / act as victim
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 CRM account with permission to create or edit a CRM Organization (or Contact) record and populate its 'website' field with an unsanitized URL. The payload only fires when a second user subsequently views that record and actively clicks the website link, which routes an attacker-controlled value (e.g. a javascript: scheme) into window.open() without protocol validation. Limiting factors: valid credentials are needed (PR:L), the attack is not self-triggering and depends on victim interaction (UI:R), and it is confined to versions prior to 1.56.2 - the patch adds a strict http/https allowlist that neutralizes the vector with no configuration change required. |
| Impact | This is a moderate, not urgent, priority. The provided CVSS 3.1 vector (CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N, base 5.4) describes a stored cross-site scripting flaw requiring authentication (PR:L) and victim interaction (UI:R), with a scope change (S:C) reflecting execution in another user's browser context and only Low confidentiality/integrity impact. No EPSS score, KEV listing, or POC was supplied, so exploitation signals are absent - there is no public exploit identified at time of analysis and no evidence of active exploitation. The source-code evidence clarifies the real mechanism: a 'website' field value is passed to window.open() without protocol validation, so a crafted javascript:-scheme URL executes when another operator clicks the organization's website link; the patch introduces a getSafeWebsiteUrl() http/https allowlist. The signals are internally consistent - authenticated, interaction-gated, limited-impact XSS - pointing to a genuine but lower-tier issue rather than a high-CVSS/low-real-risk outlier or a wormable threat. No conflicting data was observed; the main limitation is simply that exploitation-likelihood telemetry (EPSS/KEV/POC) was not provided. |
| Exploit ScenarioDerived | An authenticated CRM user with permission to create or edit an organization sets the website field to a javascript:-scheme (or other non-http) payload instead of a normal URL. When another user - such as a sales rep or administrator - later opens that organization and clicks the website link, the unsanitized value is handed to window.open(), executing attacker-controlled script in the victim's authenticated session. No public exploit was identified at time of analysis, though the fix commit publicly reveals the vulnerable code path. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 05, 2026
Stored cross-site scripting in Frappe CRM allows an authenticated user with permission to create or edit a CRM Organization or Contact record to inject a crafted URL into the website field, which is later executed when another user clicks the link. This affects versions prior to 1.56.2 and requires victim interaction, confirmed by the CVSS vector (PR:L/UI:R). CISA KEV does not list this issue, and no public exploit code has been identified at time of analysis; the vendor has released version 1.56.2 as a patch.
RemediationAI
Upgrade to Frappe CRM version 1.56.2, which contains the vendor-released patch (commit c5766d9989131d17d954e866bfc4b8d3b23e4f10). The fix enforces a strict http/https allowlist for website URLs and adds noopener to external links. No workarounds are available per the vendor advisory; if upgrading is not immediately possible, limiting permissions to edit the website field on CRM Organization and Contact records to trusted users reduces exposure, but this is not a substitute for patching. See the GitHub Security Advisory at https://github.com/frappe/crm/security/advisories/GHSA-fm34-v6j7-chwc and the release at https://github.com/frappe/crm/releases/tag/v1.56.2.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Frappe CRM is built on the Frappe framework, using a Vue.js single-page frontend. The vulnerability (CWE-79) arises because the website field on CRM Organization and Contact records was not sanitized before being passed to window.open() in the frontend. An attacker could store a URL with a javascript: scheme or other unsafe protocol, which would execute in the context of the CRM when a victim clicked the link. The fix in commit c5766d9989131d17d954e866bfc4b8d3b23e4f10 introduces getSafeWebsiteUrl, which parses the URL and allows only http and https protocols, and adds rel='noopener' to the window.open call. The CPE cpe:2.3:a:frappe:frappe_crm:*:*:*:*:*:*:*:* confirms all versions before 1.56.2 are affected.
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
AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
Authenticated user stores the payload (PR:L), a different victim must click the link (UI:R), and script runs in the victim's browser context, crossing a trust boundary (S:C) with limited C/I impact.
Primary rating from Vendor (github).
CVSS VectorVendor: github
DescriptionCVE.org
Frappe CRM is an open-source customer relationship management tool. Prior to version 1.56.2, authenticated users could set crafted URLs in a website field, which were not sanitized, causing cross-site scripting. Version 1.56.2 fixes the issue. No known workarounds are available.
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.
Affected Products (CPE)CVE.org
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
NVD
CVE.org
EPSS
GitHub
Exploit-DB