Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessEmail crafted HTML to monitored/email-to-Case address
-
ExploitEspoCRM stores unescaped body
-
ExecutionNotification email rendered to following user
-
ImpactUser opens email, HTML/JS executes in client
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 | Requires an EspoCRM instance (prior to 9.3.9) configured to ingest inbound mail via a monitored group email account, IMAP address, or an email-to-Case address - that inbound-mail feature is the exact prerequisite that makes the injection reachable by an unauthenticated sender. A triggering user must also be following the related record so the 'Email Received' stream notification is generated and emailed to them. Exploitation is LIMITED by: required victim interaction (the follower must open the notification email, per UI:R); HTML injection always renders, but JavaScript execution occurs only in mail clients that execute embedded script (many strip/sandbox it); and only instances using inbound email monitoring are exposed at all. |
| Impact | This is a genuine but moderate-severity stored HTML/JS injection (CWE-79), and the signals are internally consistent rather than conflicting. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N) yields 4.3 (Medium): injection is reachable by an unauthenticated remote attacker (PR:N) simply by emailing a monitored address, but actual impact requires a following user to open the resulting 'Email Received' notification (UI:R), and impact is limited to integrity (I:L) with no confidentiality or availability effect. Publicly available exploit code exists (vendor GitHub Security Advisory GHSA-3rh4-9hcq-g79m plus the fix commit), which raises practical reproducibility, but there is no CISA KEV listing and no EPSS score was provided, so there is no evidence of active or widespread exploitation - the POC signal and the absence-of-active-exploitation signal are distinct and should not be conflated. Net: a legitimate patch-priority item for EspoCRM operators (low-complexity, unauthenticated injection vector) but not a drop-everything emergency, since real harm depends on a mail client that executes embedded JavaScript, and many modern clients strip or sandbox it. EPSS and KEV data were not supplied in the input and should be checked before final prioritization. |
| Exploit ScenarioDerived | An attacker with no account sends a crafted email to an EspoCRM-monitored group inbox, IMAP mailbox, or email-to-Case address, embedding malicious HTML (and optionally a <script> payload) in the plain-text body. EspoCRM stores the body and, when generating the 'Email Received' stream notification, renders it unescaped; a staff user following the related record opens the notification email and the HTML renders - executing the injected JavaScript in mail clients that permit it. A working exploit path is publicly documented in the vendor's GitHub Security Advisory and the corresponding fix commit. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 15, 2026
Stored HTML injection in EspoCRM versions prior to 9.3.9 lets an unauthenticated remote sender place arbitrary HTML into the plain-text body of an email sent to a monitored group, IMAP, or email-to-Case mailbox; EspoCRM stores that body and renders it without escaping inside 'Email Received' stream notification emails delivered to users following the related record, allowing HTML injection and, in mail clients that execute embedded markup, JavaScript execution. Exploitation is constrained by the inbound-mail prerequisite, by required victim interaction (the follower must open the notification email, CVSS vector UI:R), and by mail-client behavior, yielding a moderate CVSS 3.1 score of 4.3 with limited integrity impact and no confidentiality or availability impact. Publicly available exploit code and the upstream fix commit are both public, but no confirmed active exploitation has been reported at time of analysis.
RemediationAI
Upgrade EspoCRM to version 9.3.9 or later - this is the vendor-released fix and the version referenced by the upstream release tag (https://github.com/espocrm/espocrm/releases/tag/9.3.9), with the change applied in commit f9fd47622df04617728643b4b8f1a22563cbc6e7 and documented in advisory GHSA-3rh4-9hcq-g79m. If immediate upgrade is not possible, the most effective compensating control is to disable inbound email ingestion on the affected instance: remove or disable monitored group email accounts and email-to-Case addresses, or pause the inbound-mail scheduled job, which fully removes the injection vector at the cost of losing automatic case/ticket creation and email threading - a functional trade-off many support desks will notice immediately. A narrower mitigation is to stop sending 'Email Received' stream notifications (for example by adjusting notification preferences so followers no longer receive emailed stream notifications, or by editing the notification template so the incoming body is not emitted), which preserves inbound mail processing and case creation but degrades awareness of new email on followed records. Because the vector requires victim interaction and impact is limited to integrity of the rendered notification content, and because JavaScript execution depends on the recipient's mail client executing embedded markup, organizations whose users read notifications in clients that strip or sandbox HTML/script reduce practical risk; however, this is a client-side assumption and should not replace patching. Restricting which senders can reach the monitored mailbox (allow-listing, SPF/DKIM/DMARC enforcement, or spam filtering before EspoCRM ingests mail) raises the bar for an unauthenticated sender but is bypassable via spoofed or allowed senders and should be treated as defense in depth only.
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
The flaw is CWE-79 (Improper Neutralization of Input During Web Page Generation), specifically a stored HTML/JavaScript injection through the email-notification rendering path of EspoCRM's EmailNotification tool. EspoCRM's inbound mail pipeline ingests messages from monitored group email accounts, IMAP addresses, and email-to-Case addresses; the raw plain-text body is persisted as a Note record. When a user who follows the related record receives an 'Email Received' stream notification, the notification template is populated by application/Espo/Tools/EmailNotification/Processor.php, which previously passed the note body through nl2br() without escaping, so attacker-controlled HTML reached the notification email body. The upstream patch commit f9fd47622df04617728643b4b8f1a22563cbc6e7 replaces that call with Markdown::transform($note->getPost() ?? ''), routing the value through EspoCRM's sanitizing Markdown transformation. Notably, sanitization applied to Post and Mention notifications had already been hardened, but that earlier fix did not cover the Email Received notification path, making this an incomplete-fix class issue rather than a wholly new injection pattern. The affected product is identified by CPE cpe:2.3:a:espocrm:espocrm:*:*:*:*:*:*:*:*, i.e. the EspoCRM application itself across all builds below the fixed release.
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:N/UI:R/S:U/C:N/I:L/A:N
Unauthenticated sender injects over the network (AV:N/PR:N/AC:L) but a following user must open the notification (UI:R); impact is unescaped HTML injection, so I:L with C:N/A:N and no scope change.
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 unauthenticated remote attacker can send an email to a monitored group or IMAP address, including an email-to-Case address, and place arbitrary HTML in its plain-text body. EspoCRM stores that body and renders it without escaping in Email Received stream notification emails sent to users following the related record, allowing HTML injection and, in mail clients that execute it, JavaScript execution. Earlier sanitization for Post and Mention notifications did not cover this notification path. 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-102106
NVD
CVE.org
EPSS
GitHub
Exploit-DB