---
id: "CVE-2026-121449"
kind: "vulnerability"
aliases: ["CVE-2026-121449"]
title: "Dockhand: deploy responses leak plaintext stack secrets to authorized users"
severity: "high"
cvss: 7.1
epss: null
exploited: false
status: "open"
category: "other"
products: []
ecosystems: []
tags: ["docker", "dockhand", "other", "secrets", "self-hosted"]
not_affected_if: ["no-git-stacks", "no-stored-secrets", "version-1.0.54-or-later"]
published_at: "2026-11-03T15:17:37+00:00"
first_seen_at: "2026-11-03T15:22:01+00:00"
updated_at: "2026-11-03T15:22:54+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-121449", "first_seen_at": "2026-11-03T15:22:01+00:00"}]
---

# Dockhand: deploy responses leak plaintext stack secrets to authorized users

Dockhand versions 1.0.47 before 1.0.54 attach resolved secret values to the result of deployStack(), and Git-stack routes return that result unfiltered. Holders of a stack's webhook secret or users with stacks:start permission can receive stored and external-provider secrets such as 1Password or Vault values.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed Dockhand version against the range `1.0.47` to `1.0.54`
- Look for Git-based stacks that use secrets from 1Password or Vault
- Review which accounts hold `stacks:start` permission or know a stack's webhook secret

## Fix

- Upgrade Dockhand to `1.0.54` or later

## Timeline

- 2026-11-03T15:22:01+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-121449

## Documents

- [advisory] Vendor advisory: github.com https://github.com/Finsys/dockhand/security/advisories/GHSA-w9qx-qg64-f8pf
- [advisory] Third-party advisory: www.vulncheck.com https://www.vulncheck.com/advisories/dockhand-1.0.47-before-1.0.54-secret-disclosure-via-git-stack-webhook
- [fix] Patch: github.com https://github.com/Finsys/dockhand/commit/a08843a8d5ab1d91fa2c6c392919f9117d582471

## From the sources

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.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
