Description
Dolibarr 9.0.0 through 23.0.4 saves inbound email attachments under the name supplied in the message's MIME headers without reducing it to a safe basename. The global saveAttachment() in htdocs/emailcollector/lib/emailcollector.lib.php builds $filepath = $path . $filename . '.' . $ext and hands it to file_put_contents(), and the private saveAttachment() in htdocs/emailcollector/class/emailcollector.class.php writes to $destdir.'/'.$filename; the name reaches both from the attachment's own getName() or getFilename() value by way of the record-join, create-ticket and create-project operations. A traversal sequence in the filename therefore survives intact, so any sender who can email a mailbox that an EmailCollector monitors, which is the module's ordinary use for a support or ticket inbox, can place attacker-controlled content outside the per-object attachment directory without holding a Dolibarr account. Under the hardened layout Dolibarr's SECURITY.md requires, with htdocs read-only, the write is confined to the documents tree and corrupts or forges other objects' documents; where htdocs is writable the same primitive reaches a web-executable path. Version 24.0.0 applies dol_sanitizePathName() and dol_sanitizeFileName() before the write.
Published: 2026-08-27
Score: 8.8 High
EPSS: < 1% Very Low
KEV: No
Impact: Remote File Write via Path Traversal
Action: Immediate Patch
AI Analysis

Impact

Dolibarr 9.0.0 through 23.0.4 accepts inbound email attachments and writes them to disk using the filename supplied in the MIME headers without sanitizing any traversal characters. The constructed file path is passed directly to file_put_contents() or written via a private method, so an attacker can embed sequences such as ../../ in the attachment name. The result is that the attachment is stored outside the intended per-object attachment directory, allowing arbitrary file placement and potential overwrite of critical files or upload of executable content. This flaw can lead to disclosure, modification, or execution of system files, effectively compromising the integrity and confidentiality of the system. Affected systems are the Dolibarr ERP/CRM application, specifically all releases from 9.0.0 up to and including 23.0.4. These versions lack the sanitization functions dol_sanitizePathName() and dol_sanitizeFileName() that were introduced in version 24.0.0 to strip traversal sequences and enforce safe basenames. Only the hardened deployment model with a read‑only htdocs mitigates the risk to document-level writes; otherwise the write primitive reaches any writable web path. The risk level is high with a CVSS score of 8.8; the EPSS score is not available, and the vulnerability is not listed in the CISA KEV catalog. The likely attack vector is an unauthenticated or low‑privilege attacker sending a crafted email to a mailbox monitored by the EmailCollector module, such as a support or ticket inbox. Given the ease of sending email and absence of input validation, the probability of exploitation is significant in environments where the application is publicly reachable or the mailbox is widely exposed.

Affected Systems

Affected systems are the Dolibarr ERP/CRM application from version 9.0.0 through 23.0.4. These releases include the EmailCollector module, which accepts inbound email attachments. The flaw arises because the application writes attachment files using the original filename without sanitization, enabling traversal sequences to escape the per‑object attachment directory and place files anywhere within or outside Dolibarr’s documents tree. Versions 24.0.0 and later include sanitization routines that mitigate this issue.

Risk and Exploitability

The risk level is high with a CVSS score of 8.8; the EPSS score is not available, and the vulnerability is not listed in the CISA KEV catalog. The likely attack vector is an unauthenticated or low‑privilege attacker sending a crafted email to a mailbox monitored by the EmailCollector module, such as a support or ticket inbox. The absence of input validation and the ease of sending email mean that exploitation is plausible in environments where the application is publicly reachable or the mailbox is widely exposed. Successful exploitation would allow the attacker to write arbitrary files within or outside the Dolibarr documents tree, potentially compromising application integrity, confidentiality, and availability.

Generated by OpenCVE AI on August 28, 2026 at 09:08 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Dolibarr to version 24.0.0 or later to enable dol_sanitizePathName() and dol_sanitizeFileName() sanitization
  • Restrict write permissions on the Dolibarr htdocs directory or run the application with the htdocs folder mounted read-only to prevent arbitrary writes
  • Disable the EmailCollector module or restrict its monitored mailbox to trusted sources until a patch can be applied
  • Apply a temporary filename sanitization whitelist in a custom module or patch to reject any attachment names containing .. or leading slashes

Generated by OpenCVE AI on August 28, 2026 at 09:08 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 28 Aug 2026 08:30:00 +0000

Type Values Removed Values Added
First Time appeared Dolibarr dolibarr
Dolibarr erp Crm
Vendors & Products Dolibarr dolibarr
Dolibarr erp Crm

Thu, 27 Aug 2026 18:00:00 +0000

Type Values Removed Values Added
Description Dolibarr 9.0.0 through 23.0.4 saves inbound email attachments under the name supplied in the message's MIME headers without reducing it to a safe basename. The global saveAttachment() in htdocs/emailcollector/lib/emailcollector.lib.php builds $filepath = $path . $filename . '.' . $ext and hands it to file_put_contents(), and the private saveAttachment() in htdocs/emailcollector/class/emailcollector.class.php writes to $destdir.'/'.$filename; the name reaches both from the attachment's own getName() or getFilename() value by way of the record-join, create-ticket and create-project operations. A traversal sequence in the filename therefore survives intact, so any sender who can email a mailbox that an EmailCollector monitors, which is the module's ordinary use for a support or ticket inbox, can place attacker-controlled content outside the per-object attachment directory without holding a Dolibarr account. Under the hardened layout Dolibarr's SECURITY.md requires, with htdocs read-only, the write is confined to the documents tree and corrupts or forges other objects' documents; where htdocs is writable the same primitive reaches a web-executable path. Version 24.0.0 applies dol_sanitizePathName() and dol_sanitizeFileName() before the write.
Title Dolibarr 9.0.0 through 23.0.4 Path Traversal via EmailCollector Attachment Filename
First Time appeared Dolibarr
Dolibarr dolibarr Erp\/crm
Weaknesses CWE-22
CPEs cpe:2.3:a:dolibarr:dolibarr_erp\/crm:*:*:*:*:*:*:*:*
Vendors & Products Dolibarr
Dolibarr dolibarr Erp\/crm
References
Metrics cvssV3_1

{'score': 8.2, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:L'}

cvssV4_0

{'score': 8.8, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:L/SC:N/SI:N/SA:N'}


Subscriptions

Dolibarr Dolibarr Dolibarr Erp\/crm Erp Crm
cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-08-28T17:55:52.355Z

Reserved: 2026-08-27T11:15:29.421Z

Link: CVE-2026-81730

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Analyzed

Published: 2026-08-27T20:18:55.480

Modified: 2026-08-31T18:08:50.367

Link: CVE-2026-81730

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-28T09:15:05Z

Weaknesses
  • CWE-22

    Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')