Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain stack webhook secret or stacks:start account
-
DeliveryCall Git-stack webhook, manual-deploy, or create-and-deploy endpoint
-
ExploitdeployStack() returns unfiltered resolvedSecrets array
-
ExecutionRead plaintext stored and external-provider secrets from response
-
ImpactReuse harvested 1Password/Vault/Doppler credentials downstream
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK
2 techniques across 2 tactics: Collection, Discovery The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires a Git stack in Dockhand that has at least one resolvable secret bound to it - either a stored secret or a value from an external provider (1Password, Bitwarden, HashiCorp Vault, Infisical, Doppler, or Psono). The attacker must hold one of two things: the stack's webhook secret (triggering POST/GET /api/git/stacks/{id}/webhook), or a user account with the stacks:start permission (triggering the manual Git deploy /api/git/stacks/{id}/deploy or create-with-'Deploy now' /api/git/stacks endpoints). Notably the stacks:start path exposes secrets even to users who lack the secrets permission that Dockhand otherwise requires to bind a provider. Affected versions are 1.0.47 through 1.0.53 only; the non-Git route POST /api/stacks/{name}/deploy is not affected because it already returns only {success, output/error}. Limiting factors: this is not anonymous (needs the webhook secret or stacks:start), only Git-stack code paths are vulnerable, and a stack with no bound secrets leaks nothing. There is no configuration toggle to mitigate it short of upgrading to 1.0.54. |
| Impact | This is a genuine but bounded-priority confidentiality issue rather than an inflated high-CVSS score. The input CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:H) scores 7.1 and is internally consistent with the description: network-reachable HTTP endpoints, low complexity, high confidentiality impact, and crucially PR:L - exploitation requires either possession of a stack's webhook secret or a user account with the stacks:start permission, so it is not an anonymous internet-wide bug. Integrity and availability impact are correctly N; this only leaks data. The vuln.today decision label is 'this_week', consistent with a real but non-emergency priority. It is NOT in CISA KEV, so there is no confirmed active exploitation, and no EPSS score was provided in the input, so probabilistic exploitation likelihood cannot be quantified here - that is a missing signal, not a low one. A detailed public PoC reference exists (the GHSA advisory includes a working curl reproduction and UI steps); it is not provided as packaged weaponized exploit code, but the trigger is fully documented. The signals do not conflict: a moderate-privilege confidentiality flaw with a documented reproduction and an available fix. The sharpest escalation factor is the one the CVSS score cannot capture - the leaked data is upstream provider secrets (1Password, Bitwarden, Vault, Infisical, Doppler, Psono) plus the fact that Git forges persist webhook response bodies in delivery history, so a single leaked webhook reply can expose high-value credentials to anyone with repository-admin access at the forge or anyone reading CI logs. |
| Exploit ScenarioDerived | An operator holding only a stack's webhook secret (a credential meant solely to trigger redeploys) sends a POST to /api/git/stacks/{id}/webhook and receives a JSON body containing resolvedSecrets - the plaintext values of every stored and external-provider secret bound to that stack. Alternatively, a low-privilege user with stacks:start but without the secrets permission clicks Deploy and reads the same values from the SSE 'result' event in browser network traffic. A detailed public PoC (curl command and UI steps) is documented in the GHSA advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Nov 03, 2026
Plaintext secret disclosure in Dockhand 1.0.47 through 1.0.53 exposes stored stack secrets and values pulled from external providers (1Password, Bitwarden, HashiCorp Vault, Infisical, Doppler, Psono) to authenticated callers who either hold a Git stack's webhook secret or hold the stacks:start permission. The deployStack() result object carries a resolvedSecrets array, and three Git-stack endpoints - the webhook GET/POST, the manual deploy SSE stream, and create-with-'Deploy now' - return that object unfiltered, so the credentials also get persisted in Git forge delivery histories and printed into CI logs. Finsys fixed the leak in 1.0.54; no public exploit identified at time of analysis, and the 7.1 score reflects high confidentiality impact with no integrity or availability effect (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N).
RemediationAI
Vendor-released patch: 1.0.54 - upgrade all Dockhand instances running 1.0.47 through 1.0.53 to 1.0.54 or later; there is no configuration option or environment variable that suppresses the resolvedSecrets field, so upgrading is the only complete fix (advisory: https://github.com/Finsys/dockhand/security/advisories/GHSA-w9qx-qg64-f8pf, fixing commit: https://github.com/Finsys/dockhand/commit/a08843a8d5ab1d91fa2c6c392919f9117d582471). Until the upgrade is in place the vendor-recommended workarounds are: stop printing or logging webhook reply bodies in scripts and CI and parse only success/skipped/exitCode from the response; do not point Git forge push hooks (GitHub, GitLab, Gitea/Forgejo) at Dockhand webhook endpoints, because forges store the full reply body in their delivery history, and audit existing delivery histories for leaked values; and rotate the secrets of any stack whose webhook replies may have been logged or stored. Because disclosure requires either the stack's webhook secret or an account holding stacks:start - and the stacks:start path leaks secrets even to users who lack the secrets permission - narrowing who holds those credentials and permission reduces exposure but does not remove the flaw. Treat any Git stack that was deployed or webhook-triggered on a vulnerable version as potentially compromised: rotate the resolved credentials at their source providers (1Password, Bitwarden, Vault, Infisical, Doppler, Psono) and in Dockhand's stored secrets, and review forge delivery logs and CI output for plaintext values.
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 Finsys container/stack management application built on SvelteKit and Node.js (cpe:2.3:a:finsys:dockhand). The root cause is an information-exposure class defect (CWE-200, with CWE-201 tagged in the upstream advisory): the deploy pipeline in src/lib/server/stacks.ts sets result.resolvedSecrets = Object.values(secretVars) unconditionally at line 3381 (field declared at line 117), propagating it through deployGitStack in src/lib/server/git.ts (lines 1609-1669). That array is the materialized plaintext of every secret variable bound to the stack, and it was intended purely as an internal feed for the deploy-history log redactor (RunRecorder.addSecrets) - there is no configuration option or environment variable that suppresses it. Because the field lives on a shared result type, three Git-stack HTTP handlers serialize it straight out: the webhook handler returns json(result) (src/routes/api/git/stacks/[id]/webhook/+server.ts), the manual deploy handler streams send('result', result) over SSE (…/[id]/deploy/+server.ts line 46), and the create-with-deploy handler returns deployResult (…/git/stacks/+server.ts line 234). The parallel non-Git route POST /api/stacks/{name}/deploy already sanitizes its payload to {success, output} or {success, error} and is not affected. The flaw was introduced by commit b2eb0b5 ('feat(stacks): live compose output and deploy history (#1499)'), first shipped in v1.0.47, and confirmed present in v1.0.51, v1.0.53 and on main at a08843a8d5ab1d91fa2c6c392919f9117d582471. The trigger is not a memory-safety or timing condition: it is simply the absence of field stripping on three response paths, and the resulting exposure is silent - no error or audit signal distinguishes a leaking webhook reply from a normal one.
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:N/VA:N/SC:N/SI:N/SA:N
Network HTTP endpoints with low complexity, but PR:L because a webhook secret or stacks:start permission is required; confidentiality-only impact so I:N/A:N, and no scope change in CVSS terms.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Dockhand from 1.0.47 before 1.0.54 exposes plaintext stack secrets because deployStack() attaches resolved secret values to its result as resolvedSecrets, which Git-stack routes return unfiltered. Holders of a stack's webhook secret or users with stacks:start permission can trigger the Git stack webhook, manual deploy, or create-and-deploy endpoints to receive stored and external-provider secrets such as 1Password or Vault values.
Technical POC Analysis
Note on the record: the supplied GHSA text labels the issue Moderate (6.5), "No known CVE", CWE-200 and CWE-201.
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-121449 in Dockhand versions 1.0.47 through 1.0.53 allows authenticated users to retrieve plaintext secrets from integrated credential providers, potentially exposing sensitive infrastructure credentials across the organization. This affects any team using Dockhand for secret management with Git-based deployments, and could lead to unauthorized access to critical systems if exploited.
Apply vendor patch.
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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Unauthenticated remote command execution inside containers managed by Dockhand (Finsys) affects all versions prior to 1.
Authenticated path traversal in Dockhand before 1.0.54 lets any logged-in user read, overwrite, and delete .env files ou
Arbitrary file read in Dockhand before 1.0.46 lets authenticated non-admin users holding the stacks:edit permission read
Open redirect in the OIDC initiation endpoint of Dockhand before 1.0.36 allows unauthenticated remote attackers to bounc
EUVD-2026-115871
GHSA-vvw2-c8c7-h7pp
NVD
CVE.org
Vulnrichment
Exploit-DB