Skip to content
Heist/ feed
Back to feed
Critical

Dokploy: Authenticated OS Command Injection in patch.readRepoDirectories (repoPath) leads to RCE as root

Type: advisorySources: OSV

Dokploy is a free, self-hostable Platform as a Service (PaaS). Prior to 0.29.13, the patch.readRepoDirectories tRPC procedure passes the user-controlled repoPath value from apps/dokploy/server/api/routers/patch.ts into a shell command in packages/server/src/services/patch-repo.ts without safe argument quoting. An authenticated organization member with service:read permission can inject shell metacharacters into repoPath and execute arbitrary commands through child_process.exec as root in the Dokploy container. The supplied service identifier is used only to resolve the server and does not constrain repoPath. Because the standard deployment mounts /var/run/docker.sock, container-root command execution can be used to control Docker and compromise the host and its managed applications. This issue is fixed in version 0.29.13.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-93425
Confirmed fixed CVEs
Not specified
Updated in this feed
4 Nov 2026, 11:13 UTC · Revision 1

Source evidence

Dokploy: Authenticated OS Command Injection in patch.readRepoDirectories (repoPath) leads to RCE as root

core-osv · Original source

Published 24 Sept 2026, 15:45 UTC

Dokploy is a free, self-hostable Platform as a Service (PaaS). Prior to 0.29.13, the patch.readRepoDirectories tRPC procedure passes the user-controlled repoPath value from apps/dokploy/server/api/routers/patch.ts into a shell command in packages/server/src/services/patch-repo.ts without safe argument quoting. An authenticated organization member with service:read permission can inject shell metacharacters into repoPath and execute arbitrary commands through child_process.exec as root in the Dokploy container. The supplied service identifier is used only to resolve the server and does not constrain repoPath. Because the standard deployment mounts /var/run/docker.sock, container-root command execution can be used to control Docker and compromise the host and its managed applications. This issue is fixed in version 0.29.13.

osv:CVE-2026-93425
Complete source record
{
  "id": "42d5a6b169a7fbd092d84f4f0cf5920a11835208a38e1aa787cc7c711c3fd99e",
  "url": "https://osv.dev/vulnerability/CVE-2026-93425",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Dokploy: Authenticated OS Command Injection in patch.readRepoDirectories (repoPath) leads to RCE as root",
    "summary": "Dokploy is a free, self-hostable Platform as a Service (PaaS). Prior to 0.29.13, the patch.readRepoDirectories tRPC procedure passes the user-controlled repoPath value from apps/dokploy/server/api/routers/patch.ts into a shell command in packages/server/src/services/patch-repo.ts without safe argument quoting. An authenticated organization member with service:read permission can inject shell metacharacters into repoPath and execute arbitrary commands through child_process.exec as root in the Dokploy container. The supplied service identifier is used only to resolve the server and does not constrain repoPath. Because the standard deployment mounts /var/run/docker.sock, container-root command execution can be used to control Docker and compromise the host and its managed applications. This issue is fixed in version 0.29.13.",
    "evidence": "osv:CVE-2026-93425",
    "products": [],
    "severity": "critical",
    "structured": {
      "id": "CVE-2026-93425",
      "aliases": [
        "CVE-2026-93425",
        "GHSA-56g6-wjr4-5q7p"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/dokploy/dokploy",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "8b868c66d6672be40b86315a704ea1b3b09cb2d3"
                },
                {
                  "fixed": "16b5b7293f9883327a89c69fcb6e5718767b064a"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "0.29.13"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "16b5b7293f9883327a89c69fcb6e5718767b064a"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "8b868c66d6672be40b86315a704ea1b3b09cb2d3"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v0.29.13"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v0.29.12",
            "v0.29.11",
            "v0.29.10",
            "v0.29.9",
            "v0.29.8",
            "v0.29.7",
            "v0.17.3",
            "v0.17.2",
            "v0.17.1",
            "v0.17.0",
            "v0.16.1",
            "v0.16.0",
            "v0.15.1",
            "v0.15.0",
            "v0.14.1",
            "v0.14.0",
            "v0.13.1",
            "v0.13.0",
            "v0.12.0",
            "v0.11.2",
            "v0.11.1",
            "v0.11.0",
            "v0.10.10",
            "v0.10.9",
            "v0.10.7",
            "v0.10.6",
            "v0.10.5",
            "v0.10.4",
            "v0.10.3",
            "v0.10.2",
            "v0.10.1",
            "v0.10.0",
            "v0.9.4",
            "v0.9.3",
            "v0.9.2",
            "v0.9.1",
            "v0.9.0",
            "v0.8.3",
            "v0.8.2",
            "v0.8.1",
            "v0.8.0",
            "v0.7.3",
            "v0.7.2",
            "v0.7.1",
            "v0.7.0",
            "v0.6.3",
            "v0.6.2",
            "v0.6.1",
            "v0.6.0",
            "v0.5.1",
            "v0.5.0",
            "v0.4.0",
            "v0.3.3",
            "v0.3.2",
            "v0.3.1",
            "v0.3.0",
            "v0.2.5",
            "v0.2.4",
            "v0.2.3",
            "v0.2.2",
            "v0.2.1",
            "v0.1.0",
            "v0.0.4",
            "v0.0.3",
            "v0.0.2",
            "v0.0.1"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-93425.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:34.541295165Z",
      "provider": "osv",
      "references": [
        "https://github.com/Dokploy/dokploy/releases/tag/v0.29.13",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/93xxx/CVE-2026-93425.json",
        "https://github.com/Dokploy/dokploy/security/advisories/GHSA-56g6-wjr4-5q7p",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-93425",
        "https://github.com/Dokploy/dokploy/commit/16b5b7293f9883327a89c69fcb6e5718767b064a"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-78"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/93xxx/CVE-2026-93425.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-93425",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 501964,
  "published_at": "2026-09-24T15:45:46.63+00:00"
}