Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N
Network API endpoint requires low-privilege authenticated access (PR:L); IDOR yields single-file confidentiality read (C:L) and incidental victim attachment deletion (I:L), no availability impact.
Primary rating from GitHub Advisory.
CVSS VectorGitHub Advisory
Lifecycle Timeline
6DescriptionGitHub Advisory
EspoCRM is an open source customer relationship management application. In versions 9.3.3 and below, the POST /api/v1/Email/importEml endpoint contains an Insecure Direct Object Reference (IDOR) vulnerability where the attacker-supplied fileId parameter is used to fetch any attachment directly from the repository without verifying that the current user has authorization to access it. Any authenticated user with Email:create and Import permissions can exploit this to read another user's .eml attachment contents by importing them as a new email into the attacker's mailbox, while the original victim attachment record is deleted as a side effect of the import flow. This is inconsistent with the standard attachment download path, which enforces ACL checks before returning file data, and is practically exploitable because attachment IDs are commonly exposed in normal UI and API workflows such as stream payloads and download links. This issue is fixed in version 9.3.4.
AnalysisAI
Insecure Direct Object Reference in EspoCRM 9.3.3 and earlier allows any authenticated user holding Email:create and Import permissions to read arbitrary attachment records owned by other users via the POST /api/v1/Email/importEml endpoint. The attacker supplies a victim's fileId, which the endpoint accepted without ACL validation and passed directly to the import service - importing the victim's .eml contents into the attacker's mailbox while simultaneously deleting the original victim attachment record as a side effect. A public proof-of-concept is available via the vendor's GitHub security advisory; EPSS remains at 0.02% (5th percentile), consistent with SSVC's 'Automatable: no' designation and no confirmed active exploitation at time of analysis.
Technical ContextAI
EspoCRM is a PHP-based open-source CRM platform. The flaw resides in PostImportEml.php, which previously accepted a raw fileId string and forwarded it to ImportEmlService::import() with no authorization check on the referenced Attachment entity. The commit diff (88e3ba6) confirms the fix: a new getAttachment() method was introduced in the API layer that fetches the entity via EntityManager and calls $this->acl->checkEntityRead($attachment) before proceeding - mirroring the authorization logic already enforced on standard attachment download endpoints. CWE-639 (Authorization Through User-Controlled Key) is the precise root cause: the application used an attacker-controlled identifier to directly reference a persisted object without verifying the requesting user's rights, bypassing the ACL layer entirely. The affected CPE is cpe:2.3:a:espocrm:espocrm:*:*:*:*:*:*:*:*, covering all releases prior to 9.3.4.
RemediationAI
Vendor-released patch: EspoCRM 9.3.4, available at https://github.com/espocrm/espocrm/releases/tag/9.3.4. The fix commit (https://github.com/espocrm/espocrm/commit/88e3ba6a7b5cab5dbc2298e2a093d3aa383aa95f) introduces ACL enforcement in the API layer via checkEntityRead() before any attachment is accessed. If immediate upgrade is not feasible, revoke Email:create and Import permissions from all non-administrative roles as a compensating control - this eliminates the exploitable permission combination but will prevent legitimate EML import workflows for affected users. Disabling EML import at the role/ACL level is more targeted and less disruptive than blanket permission removal. No network-layer workaround is effective given the vulnerability requires only standard authenticated API access.
Directory traversal vulnerability in EspoCRM before 2.6.0 allows remote attackers to include and execute arbitrary local
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
CSV Injection in Create Contacts in EspoCRM 7.1.8 allows remote authenticated users to run system commands via creating
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
EspoCRM's POST /api/v1/EmailTemplate/:id/prepare endpoint exposes an IDOR-class ACL bypass (CWE-639) allowing authentica
EspoCRM is an Open Source CRM (Customer Relationship Management) software. Rated medium severity (CVSS 6.5), this vulner
Cross Site Scripting in Import feature in EspoCRM 7.1.8 allows remote users to run malicious JavaScript in victim s brow
Same technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-22098