Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as EspoCRM administrator
-
DeliveryInject payload into applicationName setting via CSP nonce injection
-
ExploitPayload rendered unescaped on main app page
-
ExecutionVictim user loads application, script executes in session
-
ImpactExfiltrate page data and unsaved user input
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 EspoCRM administrator (CVSS PR:H) who can modify the applicationName configuration setting; the crafted content is injected via CSP nonce injection and rendered unescaped into the main application page, where it persists for all users. The decisive limiting factor is the administrator privilege requirement - this is not a remote unauthenticated flaw, and the attacker must already hold the highest application privilege. A second limiting factor is that impact is confined to script execution in users' browser sessions leaking page data and unsaved input (C:L, I:N, A:N); there is no server-side code execution or integrity/availability impact. Affected: all EspoCRM versions prior to 9.3.9; fixed in 9.3.9. |
| Impact | This is a genuinely low-priority issue despite having a publicly available POC. The CVSS 3.1 vector (AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:N, score 2.7) correctly reflects the core limitation: exploitation requires PR:H - an authenticated administrator - who must deliberately place crafted content into the applicationName setting. An admin already has full control over the application, so the attacker and the privileged victim-population are effectively the same trust tier; the realistic threat is an admin targeting lower-privileged users' sessions, or a compromised/rogue admin account, not arbitrary remote exploitation. No EPSS score was provided in the input, and the CVE is NOT in CISA KEV (no confirmed active exploitation). POC code exists (vendor GitHub security advisory plus the fixing commit), which raises reproducibility but does not indicate in-the-wild use - these are distinct signals. The low confidentiality-only impact (C:L, I:N, A:N) matches a persistent XSS that leaks page data/unsaved input rather than granting code execution or full account takeover. No SSVC decision data was supplied. Overall: high reproducibility but very low privilege-adjusted risk; the PR:H gate is the decisive de-prioritizing factor and the CVSS score of 2.7 is credible. |
| Exploit ScenarioDerived | A malicious or compromised EspoCRM administrator sets the applicationName configuration value to a payload that abuses CSP nonce injection, which is then rendered unescaped into the main application page served to all users. When a regular user loads the application, the attacker-controlled JavaScript executes in their session and exfiltrates page data, including unsaved form input. A public POC exists in the vendor's GitHub security advisory (GHSA-f34h-xxmv-j9xp) and the fixing commit, so exploitation is readily reproducible, though it still requires the high administrator privilege level indicated by CVSS PR:H. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 15, 2026
Stored cross-site scripting in EspoCRM (all versions prior to 9.3.9) lets an authenticated administrator inject JavaScript that executes in every user's browser session by placing crafted content in the applicationName setting and abusing CSP nonce injection. The payload is persisted in the main application page without escaping, so it executes for all users who load the application and can leak page data including unsaved form input. Publicly available exploit code exists, but exploitation requires the highest application privilege (administrator), and impact is limited to confidentiality (C:L) with no integrity or availability effect, making this a genuinely low-priority issue despite the available POC.
RemediationAI
Vendor-released patch: upgrade to EspoCRM 9.3.9 (release tag https://github.com/espocrm/espocrm/releases/tag/9.3.9), which incorporates the escaping fix in application/Espo/Core/Utils/ClientManager.php from commit ce73338ea7b463914e1271f16f8f73131ace886f and is described in advisory https://github.com/espocrm/espocrm/security/advisories/GHSA-f34h-xxmv-j9xp; verify the deployed ClientManager.php contains the escapeValue() helper applying htmlspecialchars with ENT_QUOTES | ENT_SUBSTITUTE plus curly-brace encoding, since incomplete backports will not close the CSP nonce injection path. On instances that cannot be upgraded immediately, compensate by auditing and hard-resetting the applicationName (and applicationDescription) settings to plain, trusted ASCII values, and by tightly restricting administrator accounts - the flaw only works through an admin-controlled setting, so removing standing admin access from non-essential users materially reduces exposure; the trade-off is operational friction and no guarantee that a compromised or malicious admin will not re-inject. Strengthening Content-Security-Policy headers with a strict script-src and avoiding unsafe-inline/unsafe-eval can blunt payload execution but is a defense-in-depth measure that must not be treated as a substitute for the 9.3.9 update, and it may break legitimate EspoCRM front-end functionality. Because a public POC exists, prioritize the upgrade over detection-only monitoring, and note that exploitation yields confidentiality-only impact, so no server-side integrity or availability remediation is required.
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 is a PHP-based open source CRM whose front-end pages are assembled server-side by Espo\Core\Utils\ClientManager, which renders configuration values such as applicationName and applicationDescription into the main HTML page alongside metadata (ajaxTimeout, favicon data). This is a CWE-79 cross-site scripting flaw with two contributing weaknesses: configuration values were substituted into the rendered page template without HTML escaping, and the CSP nonce mechanism used by the page was subject to injection, so an attacker-supplied value could break out of the intended nonce/attribute context and introduce attacker-controlled JavaScript. Because the value is read from the persistent applicationName configuration setting, the script is stored and delivered to every user session rather than being reflected. The upstream fix (commit ce73338ea7b463914e1271f16f8f73131ace886f) introduces an escapeValue() helper that applies htmlspecialchars with ENT_QUOTES | ENT_SUBSTITUTE in UTF-8 and additionally encodes curly braces as {/} to neutralize templating/handlebar-style placeholder injection, and casts ajaxTimeout to int; the commit diff also carries a TODO to migrate rendering to Handlebars. Per the assessed vector CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:N/A:N, network reachability is required, no user interaction is needed beyond loading the page, and the scope is unchanged, but privileges required are high (administrator) and the resulting impact is confidentiality-only.
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:H/UI:N/S:U/C:L/I:N/A:N
Stored XSS requires administrator write access to the applicationName config so PR:H; network-delivered and low-complexity with no UI for the admin injector, confidentiality-only session data leakage so C:L, I:N, A:N.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
EspoCRM is an open source customer relationship management application. Prior to 9.3.9, an authenticated administrator can place crafted content in the applicationName setting through CSP nonce injection. The persistent injection is inserted into the main application page without escaping, allowing attacker-controlled JavaScript to run in users' sessions and leak page data, including unsaved user input. This issue is fixed in version 9.3.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 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
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
EUVD-2026-102103
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB