Skip to main content

EspoCRM EUVDEUVD-2026-102106

| CVE-2026-59994 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-10-15 GitHub_M
4.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Email crafted HTML to monitored/email-to-Case address
  2. Exploit
    EspoCRM stores unescaped body
  3. Execution
    Notification email rendered to following user
  4. Impact
    User 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

espocrm < 9.3.9

Affected Packages

euvd espocrm fix: 9.3.9

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

Vendor (GitHub_M) PRIMARY 4.3 MEDIUM
AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N
vuln.today AI 4.3 MEDIUM

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.

3.1 AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
None

Lifecycle Timeline

2
Patch available
Oct 15, 2026 - 16:02 EUVD
CVE Published
Oct 15, 2026 - 14:50 cve.org
MEDIUM 4.3

DescriptionCVE.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

EPSS Score
0.3%
Top 74% exploitable
Prevalence
Low
self-hosted open-source CRM with modest, non-enterprise-wide deployment footprint
Exploit
POC
Public exploit code exists
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

42
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +22
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

CVE-2014-7985 CRITICAL POC
10.0 Oct 31

Directory traversal vulnerability in EspoCRM before 2.6.0 allows remote attackers to include and execute arbitrary local

CVE-2026-47168 CRITICAL POC
9.1 Oct 15

PHP object deserialization in EspoCRM versions prior to 9.3.7 lets an authenticated administrator achieve remote code ex

CVE-2026-33656 CRITICAL POC
9.1 Apr 22

Path traversal in EspoCRM's formula scripting engine allows authenticated administrators to achieve arbitrary file read/

CVE-2022-38843 HIGH POC
8.8 Sep 16

EspoCRM version 7.1.8 is vulnerable to Unrestricted File Upload allowing attackers to upload malicious file with any ext

CVE-2019-14351 HIGH POC
8.8 Jul 28

EspoCRM 5.6.4 is vulnerable to user password hash enumeration. Rated high severity (CVSS 8.8), this vulnerability is rem

CVE-2020-37094 HIGH POC
8.6 Feb 03

Authorization bypass in EspoCRM 5.8.5 lets an authenticated low-privilege user reuse or manipulate Basic-Authorization a

CVE-2026-105833 HIGH POC
8.3 Oct 08

EspoCRM deployments before 10.0.5 allow an authenticated user with Email Account scope to retrieve other users' stored I

CVE-2022-38844 HIGH POC
8.0 Sep 16

CSV Injection in Create Contacts in EspoCRM 7.1.8 allows remote authenticated users to run system commands via creating

CVE-2026-53574 HIGH POC
7.6 Oct 15

Boolean-based blind SQL injection in EspoCRM versions 8.1.0 through 9.3.7 allows an authenticated non-administrator to i

CVE-2026-33733 HIGH POC
7.2 Apr 22

Path traversal in EspoCRM admin template management allows authenticated administrators to read, create, overwrite, or d

CVE-2026-88896 MEDIUM POC
6.9 Sep 10

Server-side request forgery in EspoCRM before 10.0.4 allows authenticated users to route outbound HTTP requests to inter

CVE-2026-33741 MEDIUM POC
6.8 May 19

Stored cross-site scripting in EspoCRM 9.3.3 and below enables an authenticated attacker to execute arbitrary JavaScript

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy