Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to Dockhand
-
DeliverySend %252e%252e in stack env/raw route
-
ExploitDouble-decode bypasses path containment
-
ExecutionRead/overwrite/delete arbitrary .env files
-
ImpactDisclose cross-env secrets or poison deployment variables
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires a valid authenticated Dockhand session - unauthenticated requests return 401 and are not exploitable. The attacker must send a double-URL-encoded traversal sequence (e.g. %252e%252e, which SvelteKit decodes once and the route's extra decodeURIComponent decodes again to '..') as the stack name to the stack-environment routes GET/PUT /api/stacks/[name]/env/raw (and ~18 sibling routes: env, deploy, down, start, stop, restart, validate, deploys, auto-update/[containerName]). An empty/whitespace content body on PUT triggers the delete (rmSync) primitive. No non-default configuration is needed - the flaw affects default deployments of both Community and Enterprise editions. Limiting factors: in Community Edition every authenticated user is already admin so the privilege boundary crossed is mainly the fs-guard filesystem invariant; the cross-tenant impact applies specifically to Enterprise RBAC multi-environment tenancy, where the env query parameter is trusted and lets a user scoped to one environment reach another's .env files. |
| Impact | Severity signals are moderately high but qualified by an authentication requirement. The supplied CVSS 4.0 base score is 8.7 with AV:N/AC:L/AT:N/PR:L/UI:N and VC:H/VI:H/VA:L - network-reachable, low complexity, but PR:L means a valid authenticated session is mandatory (the advisory confirms unauthenticated requests are correctly rejected with 401). No EPSS score was provided and the CVE is not listed in CISA KEV, so there is no evidence of active exploitation - do not treat this as in-the-wild. However, the vuln.today decision label is 'this_week' and a detailed, runtime-verified proof-of-concept is published in the GHSA advisory, so this is a genuine, near-term patching priority rather than a high-CVSS-but-theoretical issue. A key nuance: in the Community Edition every authenticated user already holds admin, so the marginal privilege gain there is small; the real impact teeth are in Enterprise RBAC tenancy (the environment-scoping gate is bypassed, enabling cross-tenant secret disclosure) and in violating the documented fs-guard invariant on /app/data/db - but the advisory notes only the CE image was runtime-verified while the Enterprise RBAC layer was assessed from the shared public source tree, so cross-tenant impact is confirmed at code level but not runtime-demonstrated. |
| Exploit ScenarioDerived | An authenticated Dockhand user sends a PUT to /api/stacks/%252e%252e/env/raw; the server double-decodes the name to '..' and writes or reads an .env file outside the managed stacks root, including the fs-guard-protected /app/data/db directory. The attacker reads another environment's .env to steal database credentials and API keys, or poisons a stack's .env so the next normal deployment interpolates an attacker-controlled value into a running container. A verified public proof-of-concept with working curl reproduction is published in the GHSA advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
Authenticated path traversal in Dockhand before 1.0.54 lets any logged-in user read, overwrite, and delete .env files outside the managed stacks root by supplying a double-URL-encoded stack name such as %252e%252e to /api/stacks/[name]/env/raw and roughly eighteen sibling stack routes. Because stack environment files carry database credentials, API keys, and deployment secrets, the flaw exposes cross-environment secrets, permits writes into otherwise guarded directories such as /app/data/db, and enables deploy-time variable poisoning that is interpolated into the next container's environment; unauthenticated requests are rejected with 401, and the cross-tenant dimension is specific to Enterprise RBAC deployments where the trusted env query parameter lets a user scoped to one environment reach another's files. No confirmed active exploitation (CISA KEV) is recorded, but the vendor advisory publishes a public proof-of-concept with captured reproduction output against the official fnsys/dockhand v1.0.53 image; the vendor-released patch is 1.0.54 and the priority signal places remediation in the current week rather than as an emergency.
RemediationAI
Vendor-released patch: upgrade Dockhand to 1.0.54, which removes the redundant second decodeURIComponent on the stack routes (matching the fix already applied to DELETE) and applies path containment before filesystem operations; no vendor workaround is offered, so updating is the only complete fix. Until the upgrade is deployed, reduce exposure by restricting the Dockhand API to trusted networks or an authenticating reverse proxy and by minimizing the number of accounts that can reach /api/stacks/* (in Community Edition every authenticated user is admin, so account reduction is the only lever there, at the cost of operational convenience; in Enterprise RBAC, review environment scoping knowing the env query parameter is trusted). Audit stack .env files and the fs-guard-protected /app/data/db directory for unexpected content or missing files, and re-check container environments for values that were not set by operators, since a poisoned .env is consumed silently by the next normal deploy. These are compensating controls only and do not close the traversal primitive.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Dockhand is a SvelteKit application that manages Docker Compose stacks, joining a caller-supplied stack name into filesystem paths inside findStackDir(). SvelteKit already decodes route parameters once, but the environment routes call decodeURIComponent(params.name) a second time, so a %252e%252e payload reaches findStackDir() as '..' and the subsequent join(stacksDir, stackName) has no containment check - the classic CWE-22 root cause, made exploitable by double decoding rather than by the join alone. The codebase already documents and fixes this exact bug class on the stack DELETE route, and removeStack() validates names against /^[a-z0-9][a-z0-9_-]*$/ before path use; a validateStackPath() helper and write-side guards (isPathContained, assertNoTraversal) also exist in the upload paths but are never invoked on the environment and sibling routes (env, env/raw, deploy, down, start, stop, restart, validate, deploys, auto-update/[containerName]). The PUT handler's empty-content branch calls rmSync, giving the read primitive a matching delete primitive, and an Enterprise-only gate, auth.canAccessEnvironment(envIdNum), trusts a caller-supplied env query parameter, so environment scoping can be crossed. The trigger - double-encoded traversal name against the env/raw route - is confirmed by captured output on a running v1.0.53 instance (HEAD a08843a).
Know when Dockhand gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:L/SC:N/SI:N/SA:N
Network route with low complexity but a mandatory authenticated session (PR:L); .env read gives C:H, overwrite/poison gives I:H, and the arbitrary-file delete primitive gives A:L.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
Dockhand before 1.0.54 contains a path traversal vulnerability that allows authenticated users to read, overwrite, and delete .env files outside the stacks root by double-encoding the stack name. Attackers can send %252e%252e sequences to /api/stacks/[name]/env/raw to disclose cross-environment secrets, write into protected directories, or poison deployment variables.
Technical POC Analysis
CWE-22 (Improper Limitation of a Pathname to a Restricted Directory).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
CVE-2026-121448 in Dockhand (versions before 1.0.54) allows any authenticated user to access, modify, or delete secrets and configuration files outside their permitted stacks, exposing credentials and enabling deployment poisoning. This impacts all Dockhand users, particularly Enterprise deployments where cross-tenant isolation is critical, and could lead to widespread credential compromise and unauthorized access to sensitive databases and services.
No vendor-released patch identified at time of analysis. Interim mitigations include restricting API access to trusted networks, disabling or blocking the affected endpoints, implementing strict input validation and normalization, and monitoring for suspicious file access patterns; also rotate secrets stored in .env files as a precaution.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
Unauthenticated remote command execution inside containers managed by Dockhand (Finsys) affects all versions prior to 1.
Arbitrary file read in Dockhand before 1.0.46 lets authenticated non-admin users holding the stacks:edit permission read
Plaintext secret disclosure in Dockhand 1.0.47 through 1.0.53 exposes stored stack secrets and values pulled from extern
Open redirect in the OIDC initiation endpoint of Dockhand before 1.0.36 allows unauthenticated remote attackers to bounc
EUVD-2026-115870
GHSA-9vvm-xvr2-mhx6
NVD
CVE.org
Exploit-DB