CVE-2026-27602
highpriority · track · 0EPSS 0.006 · 47 %ileEUUSEPSS · scored 2026-10-27
Modoboa is a mail hosting and management platform. Prior to version 2.7.1, `exec_cmd()` in `modoboa/lib/sysutils.py` always runs subprocess calls with `shell=True`. Since domain names flow directly into shell command strings without any sanitization, a Reseller or SuperAdmin can include shell metacharacters in a domain name to run arbitrary OS commands on the server. Version 2.7.1 patches the issue.
cvss
Technical severity, 0–10. One row per scoring source.
base score 0–10 · higher = more severe · hover a vector to decode⚠ sources disagree · medium–high · 6.6–7.2
ssvc
A stakeholder decision — act, attend, or track — from exploitation and impact.
weaknesses
The CWE weakness classes this flaw belongs to.
affected products (3)
Products and version ranges known to be affected.
advisories (2)
Vendor and ecosystem advisories describing this.
- GHSA-wwv8-cqpr-vx3mModoboa has OS Command Injection2026-03-25ghsa · osvUS
### Summary `exec_cmd()` in `modoboa/lib/sysutils.py` always runs subprocess calls with `shell=True`. Since domain names flow directly into shell command strings without any sanitization, a Reseller or SuperAdmin can include shell metacharacters in a domain name to run arbitrary OS commands on the server. ### Details The root cause is in `modoboa/lib/sysutils.py:31`: ```python kwargs["shell"] = True process = subprocess.Popen(cmd, **kwargs) ``` When a create a domain is created with DKIM enabled, the domain name gets embedded into a shell command like this: ```python exec_cmd(f"openssl genrsa -out {dkim_storage_dir}/{domain.name}.pem {key_size}") ``` If the domain name contains something like `$(id>/tmp/proof).example.com`, the shell executes the injected command before running openssl. The same pattern appears in several other places: - `modoboa/admin/jobs.py:38` — mailbox rename via `mv` using `full_address` - `modoboa/amavis/lib.py:202` — `sa-learn` using `domain.name` - `modoboa/admin/models/mailbox.py:150` — `doveadm user` using `full_address` - `modoboa/maillog/graphics.py:105–107` — `rrdtool` using `domain.name` - `modoboa/webmail/models.py:54–57` — `doveadm move/delete` using `account.email` ### PoC 1. Deploy modoboa <= 2.7.0 2. Log in as a Reseller or SuperAdmin 3. Create a new domain named `$(id>/tmp/proof).example.com` with DKIM enabled 4. SSH into the server and read `/tmp/proof` Something like this will be displayed: ``` uid=0(root) gid=0(root) groups=0(root) ``` Confirmed on commit b521bcb4f (latest main at time of discovery). ### Impact An attacker with Reseller-level access (or higher) can execute arbitrary OS commands on the mail server — in a typical Modoboa deployment this means running as root. All six identified sinks are reachable through normal application workflows.
- PYSEC-2026-22232026-03-25vendor · osvUS
Modoboa is a mail hosting and management platform. Prior to version 2.7.1, `exec_cmd()` in `modoboa/lib/sysutils.py` always runs subprocess calls with `shell=True`. Since domain names flow directly into shell command strings without any sanitization, a Reseller or SuperAdmin can include shell metacharacters in a domain name to run arbitrary OS commands on the server. Version 2.7.1 patches the issue.
also known as (6)
Other names and identifiers for this entity.
sources
Which sources assert this record, and when.
references (10)
External citations — patches, advisories, analysis.
- https://access.redhat.com/security/cve/cve-2026-27602cnnvd
- https://github.com/modoboa/modoboa/commit/27a7aa133d3608fe8c25ae39125d1012c333cbfacnnvd
- https://github.com/modoboa/modoboa/releases/tag/2.7.1cnnvd
- https://github.com/modoboa/modoboa/security/advisories/GHSA-wwv8-cqpr-vx3mcnnvd
- https://github.com/modoboa/modoboa/commit/27a7aa133d3608fe8c25ae39125d1012c333cbfaenisa_euvd
- https://github.com/modoboa/modoboa/releases/tag/2.7.1enisa_euvd
- https://github.com/modoboa/modoboa/security/advisories/GHSA-wwv8-cqpr-vx3menisa_euvd
- https://github.com/modoboa/modoboa/commit/27a7aa133d3608fe8c25ae39125d1012c333cbfaPatchnvd
Attackers weaponise vulnerabilities like this against internet-exposed services. See what is exposed on your perimeter with a free passive scan.
Free scan