Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to REST API with societe/creer rights
-
DeliveryPOST to third-party bankaccounts endpoint
-
ExploitInject payload in unescaped type field
-
ExecutionBreak out of INSERT VALUES clause
-
PersistRun time-based blind subqueries
-
ImpactExfiltrate password hashes and API keys
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 Dolibarr REST API account holding the societe/creer (third-party creation) permission; the attacker injects via the 'type' field when creating a bank account through the third-party bankaccounts REST endpoint, which reaches the unescaped concatenation in CompanyBankAccount::create(). Exploitation is limited to deployments running Dolibarr 19.0.0 up to (not including) 23.0.4 with the REST API enabled and reachable, and the attacker must already possess valid credentials with that specific permission - there is no unauthenticated or UI-less-anonymous path. Because the leak uses time-based blind subqueries, extraction of password hashes and API keys is slow but does not depend on any non-default configuration beyond having the API active. |
| Impact | This is a genuine but conditional priority, not a drive-by threat. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N) and the 7.2 base score agree with the description: exploitation is network-reachable and low-complexity, but requires an authenticated account - specifically a user holding the societe/creer (third-party create) permission. That PR:L requirement is the single biggest risk-limiter, so this is a privilege-escalation / data-exposure risk from semi-trusted insiders or compromised low-tier API credentials, not an anonymous internet attack. No EPSS score, KEV listing, or confirmed public exploit is present in the input, so there is no evidence of active exploitation - the only exploitation signal is the vuln.today 'this_week' priority label and the VulnCheck advisory. Confidence in the mechanism is high because the vendor commit directly confirms the root cause (unescaped $this->type concatenated into an INSERT in CompanyBankAccount::create()). The impact is primarily confidentiality (VC:H - reading password hashes and API keys via blind subqueries), with limited integrity/availability (VI:L/VA:L). Net: a real, patch-worthy issue warranting prompt remediation on the vendor's this_week timeline, but gated behind authentication rather than a critical unauthenticated emergency. |
| Exploit ScenarioDerived | An attacker who already holds a low-privilege Dolibarr account with societe/creer permission (or who has stolen such an API key) sends a crafted POST to the third-party bankaccounts REST endpoint, placing a time-based blind SQL payload in the 'type' field. Because the value is concatenated unescaped into the INSERT statement in CompanyBankAccount::create(), the attacker uses conditional time delays to exfiltrate stored password hashes and API keys from the database. No public exploit identified at time of analysis, though VulnCheck has published an advisory and the vulnerable code is visible in the public repository. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 26, 2026
SQL injection in Dolibarr ERP CRM 19.0.0 through 23.0.3 (fixed in 23.0.4) allows an authenticated REST API user holding only the low-privilege societe/creer (third-party creation) permission to break out of the unescaped 'type' value when creating a company bank account. The injected payload reaches an unescaped string concatenation in CompanyBankAccount::create() and can be used in time-based blind subqueries to read password hashes and API keys from the database. Exploitation requires the REST API to be enabled and reachable plus valid credentials with that specific permission, so this is a conditional, credentialed attack rather than a drive-by one; no public exploit code has been identified at time of analysis and the vulnerability is not in CISA KEV.
RemediationAI
Vendor-released patch: upgrade to Dolibarr ERP CRM 23.0.4 or later, which applies the escape() fix in CompanyBankAccount::create() via commit 19991c8ffa9b4fd7338b7ef2585fadb554b86735 (https://github.com/Dolibarr/dolibarr/commit/19991c8ffa9b4fd7338b7ef2585fadb554b86735); the affected source can be compared against the 23.0.3 files referenced in the advisory at https://github.com/Dolibarr/dolibarr/blob/23.0.3/htdocs/societe/class/companybankaccount.class.php#L399 and https://github.com/Dolibarr/dolibarr/blob/23.0.3/htdocs/societe/class/api_thirdparties.class.php#L1852. Updating is the only complete fix per the vendor, since the flaw is a missing sanitizer in application code rather than a configuration toggle; before the upgrade can be applied, exposure is bounded by the prerequisites the assessment identifies, namely the REST API being enabled and reachable and an API account holding societe/creer, so keeping the API disabled or unreachable from untrusted networks and reviewing which API accounts actually carry third-party creation rights reduce the attack surface, at the cost of breaking legitimate API integrations and third-party provisioning workflows. Because the endpoint is reachable by any user with societe/creer, credentials for such accounts should be treated as potentially compromised in any instance that ran an unpatched version with API access, and Dolibarr password hashes and stored API keys should be rotated after patching.
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
Dolibarr is a PHP ERP/CRM application that persists data through a thin database abstraction layer, where values destined for SQL literals must be passed through $db->escape() (or a comparable sanitizer) before concatenation. In htdocs/societe/class/companybankaccount.class.php, the create() method built an INSERT statement as "VALUES (".((int) $this->socid).", '".$this->type."', '".$this->db->idate($this->datec)."', ...", leaving the type property interpolated raw; this is CWE-89 (improper neutralization of special elements used in an SQL command). The REST surface at htdocs/societe/class/api_thirdparties.class.php (around line 1852) exposes the third-party bankaccounts endpoint, which maps the request's type field into that property and invokes create(), so a request body value can terminate the string literal and inject arbitrary SQL. The upstream commit 19991c8ffa9b4fd7338b7ef2585fadb554b86735 wraps the value with $this->db->escape($this->type) and, in the same commit, extends the project's own CodingPhpTest.php lint rule to flag VALUES concatenations of quoted variables that are not passed through escape()/idate()/encrypt(). Because the injection point is inside an INSERT statement and the documented extraction path is time-based blind subquery inference, data exfiltration (password hashes, API keys) is technically feasible but slow; the trigger is explicitly the type field submitted through the bankaccounts REST endpoint, not a UI form.
Know when Dolibarr 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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:L/VA:L/SC:N/SI:N/SA:N
Network REST endpoint and low-complexity injection, but a societe/creer account is required so PR:L; high confidentiality from reading hashes/keys, limited integrity/availability within the same app scope.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Dolibarr ERP CRM 19.0.0 before 23.0.4 contains an SQL injection vulnerability that allows authenticated API users to inject SQL via the type field of the third-party bankaccounts REST endpoint. Attackers with only societe/creer permission can break out of the unescaped type value in CompanyBankAccount::create() to read password hashes and API keys via time-based blind subqueries.
Executive ViewAI
A high-severity SQL injection vulnerability in Dolibarr ERP CRM versions 19.0.0 through 23.0.3 could allow an authenticated user with low privileges to access sensitive data such as password hashes and API keys from the database. This puts organizations using affected Dolibarr instances at risk of data breach, but exploitation requires valid credentials and a specific permission, as well as the REST API being enabled and reachable. Leadership should prioritize patching to version 23.0.4 and review API exposure.
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.
An issue in Dolibarr ERP CRM v.17.0.1 and before allows a remote privileged attacker to execute arbitrary code via a cra
Dolibarr before 17.0.1 allows remote code execution by an authenticated user via an uppercase manipulation: <?PHP instea
Dolibarr ERP/CRM 4.0.4 has SQL Injection in doli/theme/eldy/style.css.php via the lang parameter. Rated critical severit
Cross Site Scripting vulnerability in Dolibarr ERP CRM v.17.0.1 and before allows a remote attacker to obtain sensitive
Dolibarr ERP/CRM 4.0.4 stores passwords with the MD5 algorithm, which makes brute-force attacks easier. Rated critical s
SQL injection attacks can result in unauthorized access to sensitive data, such as passwords, credit card details, or pe
Dolibarr Open Source ERP & CRM for Business before v14.0.1 allows attackers to escalate privileges via a crafted API. Ra
Dolibarr ERP & CRM <=15.0.3 is vulnerable to Eval injection. Rated critical severity (CVSS 9.8), this vulnerability is r
The website builder module in Dolibarr 13.0.2 allows remote PHP code execution because of an incomplete protection mecha
The htdocs/index.php?mainmenu=home login page in Dolibarr 10.0.6 allows an unlimited rate of failed authentication attem
SQL injection vulnerability in Dolibarr before 7.0.2 allows remote attackers to execute arbitrary SQL commands via vecto
Dolibarr ERP CRM 7.0.3 contains a remote code evaluation vulnerability that allows unauthenticated attackers to execute
EUVD-2026-109810
GHSA-m4jj-h65f-p4xj
NVD
CVE.org
EPSS
Exploit-DB