EspoCRM
CVE-2025-59428
MEDIUM
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain Knowledge Base edit account
-
DeliveryPlant malicious SVG link in article
-
ExploitVictim clicks link to attacker page
-
ExecutionBrowser issues forged api/v1/User request
-
PersistVictim submits credentials
-
ImpactAttacker-controlled admin account created
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V3 - Web Frontend Security Anti-CSRF tokens, SameSite cookies
MITRE ATT&CK
1 technique across 1 tactic: Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation is gated by several concrete prerequisites drawn from the description: (1) the attacker must already possess an account with Knowledge Base edit permissions to store the malicious SVG payload in an article body; (2) EspoCRM's Knowledge Base article rendering must permit embedding SVG elements containing links (the stored-injection sink); (3) the api/v1/User endpoint must lack CSRF protection (true before 9.1.9); and (4) a victim with sufficient privileges must both click the attacker's link AND, when prompted, re-enter their credentials on the attacker-controlled page. Limiting factors that reduce real-world risk: the required insider edit role (not anonymous/remote), mandatory victim interaction plus credential re-entry, and the fix shipped in version 9.1.9 which closes the CSRF gap. There is no default-configuration, unauthenticated path. |
| Impact | This is a moderate, conditional risk rather than a top-tier emergency, and the signals are internally consistent on that point. The CVSS 3.1 base score of 5.4 (CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N) reflects a network vector but with two meaningful brakes: PR:L means the attacker must already hold a privileged role (Knowledge Base edit permissions), and UI:R means a victim must actively click a malicious link AND re-enter their credentials for the chained CSRF to succeed. EPSS is very low at 0.14% (3rd percentile), and the CVE is NOT on CISA KEV, so there is no evidence of active or widespread exploitation. The one elevating signal is that publicly available exploit code exists (GitHub Security Advisory GHSA-c26c-wvhr-fr6r), which lowers the barrier to opportunistic use. The low EPSS despite a published PoC is coherent: exploitation requires an insider-level foothold plus specific victim behavior, which limits mass automation. No signals conflict here - all point to a real but gated privilege-escalation path. The main caveat: CVSS scope-changed (S:C) and only Low integrity impact arguably understates the outcome, since the described end state is creation of an attacker-controlled ADMINISTRATIVE account, which is effectively a full integrity compromise of the CRM. Treat as a priority to patch for any multi-user EspoCRM instance, but not as a drop-everything internet-wide threat. |
| Exploit ScenarioDerived | An attacker who already holds a Knowledge Base editor account embeds a malicious SVG element containing a crafted link in the body of a KB article. A higher-privileged user opens the article, clicks the link, is redirected to an attacker-controlled HTML page that fires a CSRF POST to api/v1/User, and - if the victim is prompted for and supplies their credentials - a new attacker-controlled account (potentially administrative) is created. Public exploit code for this chain is available in the GitHub advisory, so the technique is reproducible. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
EspoCRM versions before 9.1.9 permit an attacker holding Knowledge Base edit privileges to plant a stored SVG element with an embedded link in an article body, which redirects a clicking victim to an attacker-controlled page that fires a CSRF request at the api/v1/User endpoint. If the victim re-enters credentials on that page, the attacker gains a new account whose privileges are defined by the CSRF payload - potentially an administrative one. The chain is fully gated: it requires an authenticated insider with KB edit rights, mandatory victim interaction, credential re-entry, and the pre-9.1.9 absence of CSRF protection on api/v1/User; EPSS is low (0.14%) and publicly available exploit code exists but no CISA KEV confirmation of active exploitation.
RemediationAI
Upgrade to EspoCRM 9.1.9 or later, which closes the CSRF gap on api/v1/User and is the vendor-released fix per the GHSA-c26c-wvhr-fr6r advisory (https://github.com/espocrm/espocrm/security/advisories/GHSA-c26c-wvhr-fr6r). If immediate upgrade is not possible, restrict Knowledge Base edit permissions to a small, trusted group and audit existing articles for embedded SVG or unexpected outbound links, since that stored content is the injection vector; accept the trade-off of reduced content-authoring velocity. Enforce CSRF tokens and strict Origin/Referer validation on api/v1/User and other state-changing endpoints at a reverse proxy or via a code-level patch, understanding that misconfigured origin rules can break legitimate API clients. Because the final step depends on a victim typing credentials on an attacker page, reinforce credential-entry warnings and phishing awareness for privileged CRM users, and require re-authentication for user-creation actions. Monitor for anomalous account creation events in EspoCRM logs as a detection backstop.
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
The root cause is CWE-352 (Cross-Site Request Forgery), compounded by a stored content injection sink. EspoCRM renders Knowledge Base article bodies in a browser context, and versions before 9.1.9 allow SVG elements carrying links to survive sanitization, giving an author with legitimate KB edit permissions a way to plant persistent attacker-controlled hyperlinks. Clicking that link moves the victim off-site to attacker HTML, which then issues a state-changing cross-origin request to EspoCRM's api/v1/User endpoint; because that endpoint lacked CSRF tokens/origin validation prior to 9.1.9, the victim's browser attaches their session and the request is honored. The CVSS vector CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N (published) is more optimistic than our assessment of CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:L/I:H/A:N: the elevated attack complexity reflects the multi-step chained prerequisites, and the Integrity impact is raised to High because successful exploitation creates a persistent account - up to administrative - rather than a transient modification. Scope is changed because the injected link crosses from the CRM content context into an external attacker page. Affected CPE is espocrm:espocrm prior to 9.1.9.
Know when Espocrm 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
Attacker needs a Knowledge Base edit role (PR:L) and the chain depends on victim click plus credential re-entry (UI:R, AC:H); creating an attacker-controlled admin account is a high integrity impact across a changed scope.
Primary rating from Vendor (github).
CVSS VectorVendor: github
DescriptionCVE.org
EspoCRM is an open source customer relationship management application. In versions before 9.1.9, a vulnerability allows arbitrary user creation, including administrative accounts, through a combination of stored SVG injection and lack of CSRF protection. An attacker with Knowledge Base edit permissions can embed a malicious SVG element containing a link in the body field of an article. When an authenticated user clicks the malicious link, they are redirected to an attacker-controlled HTML page that executes a CSRF request against the api/v1/User endpoint. If the victim is prompted for and enters their credentials, an attacker-controlled account is created with privileges determined by the CSRF payload. This issue has been patched in version 9.1.9.
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 Request Forgery exploits the automatic credential inclusion behavior of web browsers.
Affected Products (CPE)CVE.org
Directory traversal vulnerability in EspoCRM before 2.6.0 allows remote attackers to include and execute arbitrary local
PHP object deserialization in EspoCRM versions prior to 9.3.7 lets an authenticated administrator achieve remote code ex
Path traversal in EspoCRM's formula scripting engine allows authenticated administrators to achieve arbitrary file read/
EspoCRM version 7.1.8 is vulnerable to Unrestricted File Upload allowing attackers to upload malicious file with any ext
EspoCRM 5.6.4 is vulnerable to user password hash enumeration. Rated high severity (CVSS 8.8), this vulnerability is rem
Authorization bypass in EspoCRM 5.8.5 lets an authenticated low-privilege user reuse or manipulate Basic-Authorization a
EspoCRM deployments before 10.0.5 allow an authenticated user with Email Account scope to retrieve other users' stored I
CSV Injection in Create Contacts in EspoCRM 7.1.8 allows remote authenticated users to run system commands via creating
Boolean-based blind SQL injection in EspoCRM versions 8.1.0 through 9.3.7 allows an authenticated non-administrator to i
Path traversal in EspoCRM admin template management allows authenticated administrators to read, create, overwrite, or d
Server-side request forgery in EspoCRM before 10.0.4 allows authenticated users to route outbound HTTP requests to inter
Stored cross-site scripting in EspoCRM 9.3.3 and below enables an authenticated attacker to execute arbitrary JavaScript
NVD
CVE.org
EPSS
GitHub
Exploit-DB