Skip to main content

EspoCRM CVE-2026-46708

| EUVDEUVD-2026-102098 MEDIUM
Authorization Bypass Through User-Controlled Key (CWE-639)
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
    Authenticate as low-privileged user
  2. Exploit
    Obtain access to shared TargetList
  3. Execution
    Invoke opt-out/cancel-opt-out on protected Contact/Lead ID
  4. Impact
    Bypass record authorization, alter opted_out state

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
Exploitation Conditions

Requires a valid authenticated EspoCRM account that is low-privileged but has been granted access to a shared TargetList; the attacker then invokes opt-out or cancel-opt-out on Contact/Lead records they cannot read or edit. Limiting factors: exploitation needs an existing authenticated low-privileged account (PR:L) and TargetList access, and the impact is confined to changing the opted_out relationship state of targeted records - there is no confidentiality disclosure and no availability impact. Applies to EspoCRM deployments prior to version 9.3.7.

Impact

This is a genuine-but-low-severity authorization flaw (CWE-639, IDOR), and the signals are internally consistent rather than conflicting. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N, base 4.3 MEDIUM) describes a network-reachable, low-complexity action that requires an existing low-privileged authenticated account and yields only a limited integrity impact (C:N, A:N). Publicly available exploit code exists (vendor GitHub Security Advisory GHSA-mqp6-23xq-7q3r plus the fixing commit, which together disclose the exact code path), but there is NO CISA KEV listing and NO EPSS score in the provided data, so the probability of widespread automated exploitation cannot be quantified from these inputs. The practical impact is narrow: an attacker can only flip the opted_out relationship state of Contact/Lead records they otherwise cannot read or edit - there is no data disclosure and no code execution. Net assessment: a real, confirmed authorization bug worth patching on a normal cycle, but not an emergency; it is a classic high-detail / low-blast-radius issue rather than a high-CVSS-but-overstated finding. Missing EPSS/KEV data means exploitation likelihood is inferred only from POC availability, not confirmed telemetry.

Exploit ScenarioDerived

A low-privileged but legitimately authenticated EspoCRM user who has been granted access to a shared TargetList sends opt-out or cancel-opt-out requests referencing Contact or Lead IDs they are not authorized to read or edit. Because the service validated access to the target list but fetched the target record without record-level authorization, the attacker silently toggles those records' marketing opt-out state. A public exploit path is available via the vendor advisory and the fixing commit diff.

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

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

Alert me

AnalysisAIv1 – Oct 15, 2026

Unauthorized integrity change in EspoCRM before 9.3.7 lets an authenticated, low-privileged user flip the opted_out state on Contacts or Leads they are not permitted to read or edit, by calling the TargetList opt-out or cancel-opt-out action with record identifiers they do not legitimately control. The attacker must already hold a valid account with access to a shared TargetList, and the resulting impact is confined to the opt-out relationship flag on the targeted records - there is no confidentiality or availability impact, consistent with the assessed CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N) and score of 4.3. Publicly available exploit code exists, the issue is fixed in EspoCRM 9.3.7, and there is no confirmed active exploitation (not in CISA KEV).

RemediationAI

Upgrade to EspoCRM 9.3.7, the vendor-released patch that introduces the ACL-aware entityProvider->get() call in application/Espo/Modules/Crm/Tools/TargetList/OptOutService.php and eliminates the user-controlled key path; the release is available at https://github.com/espocrm/espocrm/releases/tag/9.3.7 and the advisory at https://github.com/espocrm/espocrm/security/advisories/GHSA-mqp6-23xq-7q3r should be reviewed before and after deployment. If an immediate upgrade is not possible, reduce exposure by auditing which low-privileged users are members of shared TargetLists and removing untrusted accounts from them, since TargetList access is the prerequisite for exploitation - the trade-off is that affected users lose legitimate campaign and opt-out-management workflows. Administrators can also temporarily disable or restrict the opt-out/cancel-opt-out endpoints on TargetLists while the patch is scheduled, accepting that legitimate unsubscribe processing stalls, and should enable and review audit logging for opted_out changes on Contact and Lead records to detect or reconstruct abuse, noting that monitoring only supports detection and does not itself prevent the integrity change. Because the missing check is server-side authorization, no configuration hardening fully substitutes for applying 9.3.7.

Affected VersionsENISA

espocrm < 9.3.7

Affected Packages

euvd espocrm fix: 9.3.7

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-639 (Authorization Bypass Through User-Controlled Key), a classic IDOR pattern rooted in the CRM's TargetList opt-out tooling. In application/Espo/Modules/Crm/Tools/TargetList/OptOutService.php, the opt-out and cancel-opt-out flows accepted a caller-supplied targetType and targetId, validated that the current user had access to the enclosing TargetList, but then loaded the referenced Contact or Lead through entityManager->getEntityById(), which does not apply EspoCRM's record-level ACL. The service therefore acted on a record the user was never authorized to see or modify, mutating the opted_out relationship via relateById()/updateColumnsById(). The upstream fix in commit 5be59190cb683d8ac50a76e96a01aa6f51b4973a replaces that raw entity load with entityProvider->get(), the ACL-enforcing retrieval path, and additionally switches the subsequent relationship writes to use $target->getId() instead of the raw request parameter - simultaneously closing the missing authorization check and the user-controlled key confusion that allowed a mismatched identifier to be supplied. EspoCRM is a PHP CRM application exposed over the network (AV:N), with authentication and privilege handling governed by its own ACL layer, which is precisely the layer that was bypassed here.

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:L/UI:N/S:U/C:N/I:L/A:N
vuln.today AI 4.3 MEDIUM

Network-accessible web action requiring an existing low-privileged authenticated account (PR:L), no user interaction; only the opted_out state is altered, giving I:L with C:N and A:N.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/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
Low
User Interaction
None
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:44 cve.org
MEDIUM 4.3

DescriptionCVE.org

EspoCRM is an open source customer relationship management application. Prior to 9.3.7, a low-privileged user who can access a shared TargetList can invoke opt-out or cancel-opt-out actions for a protected Contact or Lead that the user cannot read or edit. The service validates access to the target list but retrieves the target record without the required record authorization, allowing unauthorized changes to its opted_out relationship state. This issue is fixed in version 9.3.7.

Threat Intelligence Overview

EPSS Score
0.2%
Top 92% exploitable
Prevalence
Low
niche self-hosted open-source CRM, limited enterprise 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.2%
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
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

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

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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