Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege user
-
DeliverySend crafted where parameter to streamAttachments
-
ExploitTrigger boolean-based blind SQL injection
-
ExecutionExtract admin session token from database
-
PersistReuse token to assume administrator
-
ImpactFull instance takeover
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Parameterized queries, prepared statements
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Persistence The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated session as a non-administrator user (PR:L) on an EspoCRM instance running a version from 8.1.0 up to but not including 9.3.8. The specific vulnerable surface is the GET entity streamAttachments endpoint, whose query path permitted complex expressions in the 'where' parameter (the fix adds withComplexExpressionsForbidden() and rejects the '#' character in attributes). No special non-default configuration is needed and no user interaction is required, but the low-privilege authentication requirement is the primary limiting factor: fully anonymous exploitation is not possible. Risk is highest where low-privilege account registration is open or where many users hold standard accounts. |
| Impact | This is a genuine prioritization candidate rather than a paper-high score. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N) describes a network-reachable, low-complexity attack requiring only low privileges and no user interaction - i.e. any authenticated non-administrator account suffices, which is a low bar in a multi-user CRM. Publicly available exploit code exists (vendor GitHub Security Advisory GHSA-qgm7-fc9g-fj75 plus the fixing commit), raising practical risk materially above a typical PR:L SQLi because the boolean-based blind technique is well understood and the advisory path is public. The technical impact is amplified beyond the C:H/I:L/A:L base: the description states the injection can extract active administrator session tokens, which converts a low-privilege read primitive into effective full administrative takeover (privilege escalation). No EPSS score was provided in the input, so probabilistic exploitation likelihood cannot be quoted. The CVE is NOT listed in CISA KEV and no active in-the-wild exploitation is claimed - so despite public POC this should be treated as exploitable-and-likely-to-be-targeted rather than confirmed mass-exploited. Net: medium-footprint product, real and public exploit path, authenticated-but-low barrier, admin-takeover consequence - worth prompt patching for any internet-exposed EspoCRM instance. |
| Exploit ScenarioDerived | An attacker holding (or registering/phishing) any low-privilege EspoCRM user account sends a crafted 'where' parameter to the GET entity streamAttachments endpoint, which permits complex expressions and passes attacker input into the SQL query. Using boolean-based blind SQL injection they iteratively extract database contents - notably an active administrator's session token - then reuse that token to authenticate as administrator and take over the instance. Publicly available exploit material (vendor advisory and fixing commit) lowers the effort required. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 15, 2026
Boolean-based blind SQL injection in EspoCRM versions 8.1.0 through 9.3.7 allows an authenticated non-administrator to inject crafted expressions through the 'where' parameter of the GET entity streamAttachments endpoint, enabling extraction of arbitrary database contents - including active administrator session tokens - and subsequent full privilege escalation. The flaw requires a valid low-privilege session (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:L, 7.6) and is not exploitable anonymously. Public exploit code exists for this issue, though it has not been confirmed as actively exploited (CISA KEV); EspoCRM 9.3.8 is the fixed release.
RemediationAI
Upgrade to EspoCRM 9.3.8 or later, which is the vendor-released fix containing commit e4a6aea90886d672f96b5d9a7cb0722e3d3654e1; see the advisory GHSA-qgm7-fc9g-fj75 and the release notes at https://github.com/espocrm/espocrm/releases/tag/9.3.8. If an immediate upgrade is not possible, apply the upstream patch manually, backporting both changes - the '#' attribute rejection in application/Espo/Core/Select/Where/Checker.php and the ->withComplexExpressionsForbidden() call in application/Espo/Tools/Stream/RecordService.php. Additional compensating controls: block or rate-limit GET requests to the entity streamAttachments route that carry a 'where' query parameter at a reverse proxy or WAF, accepting that this may break legitimate stream/attachment filtering for some integrations. Because the injection can read session tokens and achieve privilege escalation, treat every EspoCRM instance in the affected range that is reachable by low-privilege users as potentially compromised: rotate administrator credentials, invalidate active sessions/API tokens, and audit authentication logs for anomalous streamAttachments requests. Note that the input data labels this as publicly available exploit code, so patch urgency is elevated even though no active exploitation has been confirmed; reducing the number of low-privilege accounts (and closing open self-registration) narrows the attack surface but does not remove it, since any authenticated non-admin can trigger the flaw.
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
EspoCRM's ORM exposes a search/where query layer that is normally constrained to simple attribute comparisons, but the entity streamAttachments path (Espo\Tools\Stream\RecordService::findAttachments) built its query without that restriction, permitting complex expressions. The upstream fix is twofold: Select/Where/Checker.php now rejects attributes containing the '#' character (thrown as Forbidden: 'Not allowed character in attribute.'), closing the attribute-path injection vector, and RecordService adds ->withComplexExpressionsForbidden() so a user-supplied 'where' clause on this endpoint can no longer contain raw SQL fragments. This maps to CWE-89 (Improper Neutralization of Special Elements used in an SQL Command) - untrusted input reaching a query builder that lacked parameterization/allow-listing for the affected code path. The blind-boolean nature means an attacker infers data bit-by-bit through response differences rather than seeing output directly, which makes extraction slow but fully arbitrary against tables reachable by the application's database user, including the session/token store the description identifies as the escalation path.
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:L/UI:N/S:U/C:H/I:L/A:L
Network endpoint reachable with a standard non-admin account (AV:N/PR:L), no interaction or special conditions (AC:L/UI:N); blind SQLi yields high confidentiality (DB/token read) with limited integrity/availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
EspoCRM is an open source customer relationship management application. From 8.1.0 until 9.3.8, an authenticated non-administrator can submit a crafted where parameter to the GET entity streamAttachments endpoint because that query path permits complex expressions. Boolean-based blind SQL injection can extract arbitrary database information, including active administrator session tokens, and can enable full privilege escalation. This issue is fixed in version 9.3.8.
Technical POC Analysis
CWE-89 (Improper Neutralization of Special Elements used in an SQL Command).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Latest POC
3 public PoC links from github
Sign in to open the public PoC links collected for this CVE.
Executive ViewAI
EspoCRM versions 8.1.0 through 9.3.7 are affected by a high-severity SQL injection vulnerability that allows an authenticated low-privilege user to extract sensitive database contents, including administrator session tokens, and escalate to full administrative control. Publicly available exploit code exists, and organizations using these versions face potential data breaches and complete system compromise, underscoring the need for immediate remediation.
Apply vendor patch.
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
SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
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/
PHP object deserialization in EspoCRM versions prior to 9.3.7 lets an authenticated administrator achieve remote code ex
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
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
Information disclosure in EspoCRM's portal Note API allows an authenticated portal user (CVSS PR:L) who already has stre
EUVD-2026-102101
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB