Skip to main content

EspoCRM EUVDEUVD-2026-102099

| CVE-2026-46691 MEDIUM
Missing Authorization (CWE-862)
2026-10-15 GitHub_M
6.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Authenticate with Import scope account
  2. Delivery
    Enumerate or obtain victim's import ID
  3. Exploit
    POST /api/v1/Import/{id}/exportErrors
  4. Execution
    Receive attachment identifier for error CSV
  5. Impact
    Download CSV containing victim's import rows

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Attacker must hold a valid, authenticated EspoCRM account that has been granted Import scope access (PR:L), and must supply another user's import record identifier to POST /api/v1/Import/{id}/exportErrors on an instance running a version prior to 9.3.7. The data exposed is limited to the error CSV rows of the targeted import. Limiting factors: no unauthenticated access is possible (a provisioned account with Import permission is mandatory), the attacker needs or must guess/enumerate a target import ID, and upgrading to 9.3.7 (which adds the entity-level checkEntityRead ownership check) fully closes the path; no user interaction by the victim is required.

Impact

This is a broken object-level authorization flaw (CWE-862) in EspoCRM's Import export-errors endpoint. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N, base 6.5) indicates a network-reachable, low-complexity attack requiring only low privileges (PR:L = an authenticated account with Import scope), with high confidentiality impact and no integrity or availability impact. The commit diff confirms the root cause: exportErrors() fetched the Import record by ID without calling checkEntityRead(), so a scope-level check passed while the per-record ownership check was skipped - a classic IDOR. Publicly available exploit material exists (the vendor GHSA advisory, the fixing commit, and the 9.3.7 release are all referenced), which raises practical risk because the vulnerable code path and fix are fully disclosed. No CISA KEV listing and no EPSS score were provided in the input, so there is no evidence of active in-the-wild exploitation and exploitation probability cannot be quantified from the data given. Net assessment: a genuine but medium-severity authenticated information-disclosure issue - not a drive-by unauthenticated RCE. The high CVSS confidentiality rating should be weighed against the real limiting factor that the attacker must already hold a valid EspoCRM account with Import permissions, which narrows the threat largely to insider or post-account-compromise scenarios.

Exploit ScenarioDerived

An authenticated EspoCRM user who holds Import scope access (but not ownership of a given import) sends POST /api/v1/Import/{id}/exportErrors supplying another user's import identifier, and the server returns an attachment identifier for a CSV containing rows from that victim's import, which the attacker then downloads. Because the endpoint only checks scope-level access and omits the entity-level ownership check, the attacker reads data they were never authorized to see. A public exploit path is disclosed via the vendor advisory and fixing commit, lowering the effort to reproduce.

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

Broken object-level authorization in EspoCRM before 9.3.7 allows any authenticated user who has been granted Import scope access to read the row-level error CSV of another user's import job by posting to /api/v1/Import/{id}/exportErrors with a foreign import identifier. The endpoint returns an attachment identifier for the error file, exposing imported data rows (customer records, contact data, and similar) that the caller does not own; the exposure is limited to the contents of that import's error export and requires the attacker to know or enumerate a target import ID. Publicly available exploit code exists (the upstream advisory, fix commit, and 9.3.7 release are publicly linked), but there is no confirmed active exploitation via CISA KEV and no EPSS score was supplied; the vendor-released patch is 9.3.7, which adds the missing entity-level read check.

RemediationAI

Vendor-released patch: upgrade EspoCRM to 9.3.7 or later (https://github.com/espocrm/espocrm/releases/tag/9.3.7), which introduces the missing checkEntityRead ownership check in the Import service (commit 71ad7661215d25f7d0f2756c8e8dbc257cad848f) and closes the endpoint. If immediate upgrade is not possible, the most effective compensating control is to remove the Import scope from all non-administrative roles and grant it only to a small, trusted set of accounts, since the attack prerequisite is a provisioned account holding Import scope - the trade-off is that legitimate bulk-import users lose that functionality until the upgrade is applied. In parallel, audit and minimize how import identifiers can be enumerated by low-privilege users, review access logs for POST /api/v1/Import/{id}/exportErrors requests whose import ID does not belong to the calling account, and treat any such error CSV downloads as a potential data disclosure event requiring notification review. Restricting network access to the EspoCRM API (VPN or IP allowlist) reduces exposure but does not fix the authorization gap and is not a substitute for upgrading.

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

CWE-862 (Missing Authorization) in the PHP-based EspoCRM application, specifically in application/Espo/Tools/Import/Service.php. EspoCRM's Import tooling is normally protected by two layers: a scope-level ACL check on the Import scope, and an entity-level ownership check performed by the Import AccessChecker used by sibling Import endpoints. The exportErrors() method performed only the scope-level check and fetched the import record directly from the ORM repository without verifying that the caller could read that specific ImportEntity. The fix commit 71ad7661215d25f7d0f2756c8e8dbc257cad848f factors the record retrieval into a private getImport() helper that throws Forbidden unless $this->acl->checkEntityRead($import) succeeds, restoring object-level authorization on the endpoint. The attack surface is a normal authenticated REST API route (POST /api/v1/Import/{id}/exportErrors) reachable with the AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N vector, i.e. confidentiality-only impact with no integrity or availability effect and no victim interaction.

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 6.5 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
vuln.today AI 6.5 MEDIUM

Network REST endpoint with low complexity; requires an authenticated Import-scope account so PR:L; discloses another user's import data (C:H) with no integrity or availability impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/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
High
Integrity
None
Availability
None

Lifecycle Timeline

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

DescriptionCVE.org

EspoCRM is an open source customer relationship management application. Prior to 9.3.7, an authenticated user with Import scope access can send POST /api/v1/Import/{id}/exportErrors with another user's import identifier and retrieve an attachment identifier for a CSV containing rows from that import. The endpoint performs a scope-level check but omits the entity-level ownership check enforced by the Import AccessChecker and sibling Import endpoints. This issue is fixed in version 9.3.7.

Threat Intelligence Overview

EPSS Score
0.2%
Top 87% exploitable
Prevalence
Low
niche open-source CRM, limited enterprise 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.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

52
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +32
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