ZeroHour

CVE-2026-81730

moderate

Arbitrary File Write via Path Traversal in Dolibarr EmailCollector

CVSS 4.0
8.8 high
EPSS
<1%p31
Published
()
Modified
AI analysis

Dolibarr ERP/CRM versions 9.0.0 through 23.0.4 contain a path traversal flaw in the EmailCollector module's attachment handling: the filename taken from an inbound email's MIME headers is passed unsanitized to file_put_contents() in both emailcollector.lib.php and emailcollector.class.php, so traversal sequences survive intact. Any sender who can email a mailbox that an EmailCollector monitors, which is the module's ordinary use for support or ticket inboxes, can trigger the flaw without holding a Dolibarr account. The attacker gains the ability to place attacker-controlled files outside the per-object attachment directory; under the hardened layout (htdocs read-only) the write is confined to the documents tree, where it can corrupt or forge other objects' documents, and where htdocs is writable the write can reach a web-executable path, opening the door to code execution. Installations of Dolibarr 9.0.0 through 23.0.4 running EmailCollector on a mailbox that accepts external mail are affected. No public proof-of-concept, CISA KEV listing, or known exploitation exists, and EPSS estimates only a 0.4% probability of exploitation within 30 days.

What to do: Upgrade to Dolibarr 24.0.0 or later, which applies dol_sanitizePathName() and dol_sanitizeFileName() to attachment names before writing. If an immediate upgrade is not possible, restrict which senders can reach the monitored inbox, apply the hardened layout from SECURITY.md (make htdocs read-only) so writes are confined to the documents tree, and audit the documents directory for unexpected or misplaced files.

Affected
Dolibarr ERP/CRM9.0.0 through 23.0.4 (fixed in 24.0.0)
Estimated exposure
moderatelikely on the order of thousands of self-hosted Dolibarr instances with EmailCollector enabled on a mailbox that accepts external mail (order-of-magnitude… — No public install counts were supplied, so the estimate rests on deployment patterns: Dolibarr is a widely self-hosted open-source ERP/CRM, but only installations running the optional EmailCollector module against a support- or…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

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.

Vendors
dolibarr
Products
dolibarr erp\/crm
Weakness
CWE-22
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X

In the news

No ingested article mentions this CVE yet.