Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAuthenticate with low-privilege EspoCRM account
-
DeliveryUpload malicious SVG referencing attacker JS file
-
ExploitUpload attacker-controlled JavaScript as second attachment
-
InstallShare SVG link to target victim via record or internal message
-
C2Victim opens SVG inline in browser
-
ExecuteSame-origin CSP allowance loads attacker JS from EspoCRM origin
-
ImpactArbitrary JavaScript executes in victim's authenticated session
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 | The attacker must hold a valid EspoCRM account with at minimum low-privilege access (CVSS PR:L confirmed), sufficient to upload attachments to at least one attachment-capable field in the application. Victim interaction is required (CVSS UI:R): the target user must be socially engineered or otherwise induced to open the malicious SVG attachment inline in their browser - clicking a shared record link or an attachment link in an internal note satisfies this condition. The attack additionally requires that the EspoCRM instance serves SVG files as inline top-level documents rather than forced downloads, which appears to be the default behavior in affected versions. The CSP bypass component requires that the attacker can also upload a JavaScript file to the same EspoCRM instance so that it is served from the same origin. Exploitation is limited by: the need for an attacker-controlled CRM account (rules out fully external unauthenticated attackers), the need for victim click interaction (not automatable at scale), and the availability of same-origin script hosting (requires JS upload capability alongside SVG upload capability). |
| Impact | The CVSS 6.8 score reflects a network-reachable (AV:N), low-complexity (AC:L) vulnerability requiring a low-privilege authenticated account (PR:L) and victim interaction (UI:R), with unchanged scope (S:U) and a high confidentiality impact (C:H) alongside limited integrity and availability impact (I:L/A:L). The PR:L requirement is a meaningful constraint - the attacker must possess a valid EspoCRM account - but in multi-tenant CRM deployments this bar is often low (e.g., partner accounts, sales reps, trial users). UI:R reduces automatable mass exploitation, but social engineering within a CRM context (sharing a record, sending an internal note with an attachment) is highly plausible. A publicly available exploit exists, which elevates practical risk above typical stored-XSS findings. No CISA KEV listing is present, and EPSS data was not provided in the intelligence feed. The CSP bypass technique using a same-origin uploaded JS file is a non-trivial but well-documented attack pattern, and its presence here suggests the vulnerability was carefully researched rather than discovered incidentally. Overall, this warrants priority remediation in any deployment where untrusted or low-trust users hold accounts. |
| Exploit ScenarioDerived | An attacker with a low-privilege EspoCRM account uploads a crafted SVG file containing a script tag referencing a second attacker-controlled JavaScript file - also uploaded as a legitimate attachment and therefore hosted on the EspoCRM origin. The attacker then shares a record or sends an internal communication containing the SVG attachment to a target user (e.g., a CRM administrator or colleague). When the victim opens the SVG link, EspoCRM serves it inline, the same-origin CSP allowance permits loading the attacker's JavaScript attachment, and the script executes in the victim's authenticated session - enabling session token theft, account takeover, or further lateral movement within the CRM. A public exploit exists, lowering the technical bar for this attack. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 19, 2026
Stored cross-site scripting in EspoCRM 9.3.3 and below enables an authenticated attacker to execute arbitrary JavaScript in the browser session of any user who opens a crafted SVG attachment. The attack exploits EspoCRM's inline SVG serving behavior combined with a CSP misconfiguration that blocks inline scripts but permits same-origin external scripts - allowing a separately uploaded attacker-controlled JavaScript file (also hosted on the same EspoCRM origin) to be loaded and executed. A public exploit exists per the vendor's own GitHub security advisory; no CISA KEV listing has been identified at time of analysis.
RemediationAI
Upgrade EspoCRM to version 9.3.4, which is confirmed as the vendor-released fix per the GitHub security advisory at https://github.com/espocrm/espocrm/security/advisories/GHSA-5wh5-ccv2-m3pv. If an immediate upgrade is not feasible, administrators should consider restricting SVG file uploads at the application or web server layer - for example, by adding SVG to the list of blocked attachment MIME types or file extensions in EspoCRM's administration settings; this removes the attack vector entirely but may impact legitimate use of SVG assets. A secondary compensating control is to configure the web server to serve all attachments with a Content-Disposition: attachment header, which forces file download rather than inline rendering and breaks the XSS chain; however, this must be applied carefully as it may disrupt image preview functionality across the application. Tightening the CSP to remove same-origin script-src allowances would also neutralize the CSP bypass component of this attack chain, but may break legitimate EspoCRM functionality and requires testing. Patching to 9.3.4 remains the only fully confirmed and side-effect-free resolution.
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
EspoCRM (CPE: cpe:2.3:a:espocrm:espocrm:*:*:*:*:*:*:*:*) fails to sanitize SVG uploads before serving them as top-level inline documents via both the attachment and image entry points. SVG is an XML-based format that natively supports embedded script elements, making it a well-known XSS vector when served with content types that permit script execution. The root cause class is CWE-79 (Improper Neutralization of Input During Web Page Generation). Critically, the deployed Content Security Policy blocks inline SVG script execution but retains a same-origin script-src allowance; because EspoCRM also serves attacker-uploaded JavaScript files from the same origin, an attacker can chain a malicious SVG with a second JavaScript attachment to bypass the inline-script restriction entirely. The vulnerability spans both the attachment and image entry points, broadening the reachable attack surface within normal user workflows.
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:U/C:H/I:L/A:L
Primary rating from Vendor (GitHub_M) · only source for this CVE.
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
EspoCRM is an open source customer relationship management application. Versions 9.3.3 and below allow authenticated users to upload SVG attachments through normal attachment-capable fields and later serve those SVG files as top-level inline documents through both the attachment and image entry points, resulting in stored cross-user XSS reachable through a normal attachment workflow. Although inline SVG script is blocked by the response CSP, the same CSP still allows same-origin external script. As a result, an attacker can upload a malicious SVG together with a second attacker-controlled JavaScript attachment, then trick another user into opening the SVG to execute JavaScript in the victim's EspoCRM origin. This issue has been fixed in version 9.3.4.
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.
Directory traversal vulnerability in EspoCRM before 2.6.0 allows remote attackers to include and execute arbitrary local
Path traversal in EspoCRM's formula scripting engine allows authenticated administrators to achieve arbitrary file read/
PHP object deserialization in EspoCRM versions prior to 9.3.7 lets an authenticated administrator achieve remote code ex
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
Information disclosure in EspoCRM's portal Note API allows an authenticated portal user (CVSS PR:L) who already has stre
EUVD-2026-30967
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB