Modoboa has OS Command Injection
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:
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:
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 viamvusingfull_addressmodoboa/amavis/lib.py:202—sa-learnusingdomain.namemodoboa/admin/models/mailbox.py:150—doveadm userusingfull_addressmodoboa/maillog/graphics.py:105–107—rrdtoolusingdomain.namemodoboa/webmail/models.py:54–57—doveadm move/deleteusingaccount.email
PoC
- Deploy modoboa <= 2.7.0
- Log in as a Reseller or SuperAdmin
- Create a new domain named
$(id>/tmp/proof).example.comwith DKIM enabled - 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.
Software afectado
Haz clic en una tecnología para ver todas sus vulnerabilidades.
| Plataforma | Paquete | Versiones vulnerables | Corregida en |
|---|---|---|---|
| Python (PyPI) | modoboa | < 2.7.1 | 2.7.1 |
Referencias
- Vector CVSS
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H- Debilidad (CWE)
CWE-78- Plataforma
- Python (PyPI)
- Paquete
modoboa- Publicada
- 25.03.2026
- Actualizado
- 11.10.2026 13:19
Fuentes y licencias
OSV / GitHub Advisory Database - PYSEC-2026-2223 - PyPA Advisory Database; CC BY 4.0
OSV / GitHub Advisory Database - GHSA-wwv8-cqpr-vx3m - CC BY 4.0
Historial de vulnerabilidades: modoboa
Todas las vulnerabilidades publicadas de este paquete (Python (PyPI)), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.
- Entradas en total
- 15
- Primera → última
- 01.2023 03.2026
- Sin corrección
- 0
- Explotada en ataques
- 0
Distribución por gravedad
- Crítica 2
- Alta 4
- Media 9
Divulgaciones por año
- 2023: 14
- 2024: 0
- 2025: 0
- 2026: 1
-
Modoboa has OS Command Injection esta entrada
Identifica las vulnerabilidades de tu aplicación
Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.