CVE-2026-72869 is a command injection vulnerability in Dokploy's database restore API. The issue stems from embedding user-supplied database names directly into shell commands executed via Node.js exec, which then invoke docker exec to run database restore tools (pg_restore, mongorestore) inside containers. The nested shell construction—Node.js exec invoking /bin/sh, which then invokes docker exec invoking another /bin/sh—created an attack surface that likely escaped the developer's mental security model.
The high CVSS (9.9) is not incidental. The Docker-privileged host context is the critical amplifier: database restore operations execute inside containers configured with host privileges, meaning arbitrary command injection translates to host compromise. This architectural decision—treating container orchestration permissions as separate from application-level access control—created a permission model mismatch. The RBAC permission (backup:restore) controlled who could trigger restores, but the underlying Docker privilege model controlled what could be executed. A user authorized to restore databases could inject commands because no input validation gate existed between the authorization check and the shell construction.
This vulnerability follows a recurring genotype visible since 2014 in comparable DevOps tooling: Jenkins pipeline steps, GitLab CI runners, and similar orchestration layers all exhibit the same mutation. Developers face friction between shell string interfaces (what CLI-first database tools expose) and parameterized input patterns (what secure coding demands). The path of least resistance—direct string interpolation—becomes the cultural default when the surrounding code patterns model it.
For defenders: validate all user-supplied database name parameters against strict allowlists (alphanumeric, hyphens, underscores only) before shell construction. Treat authorization as orthogonal to input validation—permission to perform an operation does not imply trust in the parameters that operation accepts. Audit any code path where user input flows into shell commands, particularly in features added for real-time UX streaming, where the temporal pressure to deliver functionality incentivizes unsafe shortcuts. The docker exec pattern warrants particular scrutiny: operations running inside privileged containers should be reviewed as if they execute on the host, because in Dokploy's architecture, they effectively do.