Description
Dockge validates a stack name only on the write path. In backend/stack.ts the allow-list check in validate(), which requires the name to match ^[a-z0-9_-]+$, is reached from save() alone, while the path getter returns path.join(this.server.stacksDir, this.name) and Stack.getStack builds path.join(server.stacksDir, stackName) with no check. The socket handlers in backend/agent-socket-handlers/docker-socket-handler.ts confirm the caller is logged in and that the name is a string, then pass it straight to Stack.getStack, so a name containing traversal sequences resolves outside the managed stacks directory. An authenticated user can therefore read the composeENV and composeYAML values of any directory the server process can reach, which discloses the secrets in that directory's .env or Compose file, and can invoke delete(), which runs docker compose down and then fsAsync.rm on the traversed path with recursive and force set, removing that directory. Disclosure is limited to files named .env or an accepted Compose filename, and deletion requires the target directory to hold a valid Compose file so that docker compose down exits successfully. Dockge commonly runs as root with access to the Docker socket, so the reachable set includes unrelated applications on the host. Instances configured with disableAuth, a supported option that logs the caller in as admin automatically, expose both operations without authentication.
Published: 2026-08-20
Score: 8.7 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Dockge validates stack names only when saving a stack, but the path composed for stack retrieval or deletion lacks an allow‑list check. An authenticated user can supply a stack name containing traversal sequences, causing the server to resolve paths outside its intended directory. This allows reading .env or Compose files of any directory reachable by the Dockge process and deleting directories that contain a valid Compose file. Because Dockge often runs as root and has access to the Docker socket, the attacker gains confidentiality and integrity access to files of unrelated host applications. The exploitation requires API authentication; no remote code execution is involved, but the impact can be destructive.

Affected Systems

The vulnerability affects deployments of the open‑source Dockge project distributed by louislam. The known affected release referenced in the advisory is v1.5.0; any other releases that have not removed the unvalidated stack name check are also affected. No other vendor or product is listed.

Risk and Exploitability

The CVSS score of 8.7 indicates high severity, with the main risk being loss of sensitive data and potential destruction of host files. EPSS data is not available, so the current likelihood of exploitation cannot be quantified. The vulnerability is not listed in the CISA KEV catalog, suggesting that public exploits are not yet confirmed. Attackers would need authenticated access to Dockge and the ability to specify stack names. Because deployments frequently run Dockge with root privileges, these conditions are often met, making exploitation plausible if the adversary can reach the Dockge API.

Generated by OpenCVE AI on August 21, 2026 at 01:19 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Dockge to a release that validates stack names on all paths, such as any version pinned after the vulnerability disclosure.
  • If the upgrade cannot be performed immediately, disable the disableAuth configuration option to enforce user authentication and restrict API access to trusted administrators.
  • Limit network exposure of the Dockge API or place it behind a secure reverse proxy, and ensure the Docker socket and host files are protected from unauthorized processes.
  • As a temporary measure, avoid running Dockge with root privileges and consider restricting the server process's file system permissions so it cannot traverse arbitrary directories.

Generated by OpenCVE AI on August 21, 2026 at 01:19 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 21 Aug 2026 12:30:00 +0000

Type Values Removed Values Added
First Time appeared Louislam
Louislam dockge
Vendors & Products Louislam
Louislam dockge

Thu, 20 Aug 2026 20:45:00 +0000

Type Values Removed Values Added
Description Dockge validates a stack name only on the write path. In backend/stack.ts the allow-list check in validate(), which requires the name to match ^[a-z0-9_-]+$, is reached from save() alone, while the path getter returns path.join(this.server.stacksDir, this.name) and Stack.getStack builds path.join(server.stacksDir, stackName) with no check. The socket handlers in backend/agent-socket-handlers/docker-socket-handler.ts confirm the caller is logged in and that the name is a string, then pass it straight to Stack.getStack, so a name containing traversal sequences resolves outside the managed stacks directory. An authenticated user can therefore read the composeENV and composeYAML values of any directory the server process can reach, which discloses the secrets in that directory's .env or Compose file, and can invoke delete(), which runs docker compose down and then fsAsync.rm on the traversed path with recursive and force set, removing that directory. Disclosure is limited to files named .env or an accepted Compose filename, and deletion requires the target directory to hold a valid Compose file so that docker compose down exits successfully. Dockge commonly runs as root with access to the Docker socket, so the reachable set includes unrelated applications on the host. Instances configured with disableAuth, a supported option that logs the caller in as admin automatically, expose both operations without authentication.
Title Dockge Path Traversal via Unvalidated Stack Name Allows Arbitrary Compose and .env Disclosure and Arbitrary Directory Deletion
Weaknesses CWE-22
References
Metrics cvssV3_1

{'score': 8.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'}

cvssV4_0

{'score': 8.7, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: VulnCheck

Published:

Updated: 2026-08-21T16:21:25.910Z

Reserved: 2026-08-10T19:06:03.364Z

Link: CVE-2026-73040

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-08-20T21:17:09.110

Modified: 2026-08-21T17:16:43.950

Link: CVE-2026-73040

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-21T12:08:31Z

Weaknesses
  • CWE-22

    Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')