---
id: "CVE-2026-91168"
kind: "vulnerability"
aliases: ["CVE-2026-91168"]
title: "Warpgate: deleted account's Kubernetes access reused by replacement account"
severity: "medium"
cvss: 6.8
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["kubernetes", "package", "self-hosted", "warpgate"]
not_affected_if: ["no-kubernetes-targets", "version-0.29.0-or-later"]
published_at: "2026-11-04T16:17:54+00:00"
first_seen_at: "2026-11-04T16:28:15+00:00"
updated_at: "2026-11-04T16:28:58+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-91168", "first_seen_at": "2026-11-04T16:28:15+00:00"}]
---

# Warpgate: deleted account's Kubernetes access reused by replacement account

Warpgate, a bastion host for SSH, HTTPS and MySQL, caches Kubernetes target authorization by username rather than user ID, and does not clear the cache when a session closes. A new low-privilege account created with a deleted account's username can reuse that cached entry and reach Kubernetes cluster resources with the old account's target credentials.

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

## How to check

- Check the Warpgate version with `warpgate --version`; versions from 0.21.0 through 0.28.x are in the affected range.
- Check whether Kubernetes targets are configured in Warpgate (unknown whether the sources name a specific config key).
- Check whether accounts are deleted and recreated with the same username.

## Fix

- Upgrade Warpgate to `0.29.0`.

## Timeline

- 2026-11-04T16:28:15+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-91168

## Documents

- [advisory] Vendor advisory: github.com https://github.com/warp-tech/warpgate/security/advisories/GHSA-pw7m-635x-pmx7
- [fix] Patch: github.com https://github.com/warp-tech/warpgate/commit/2f77f07b8335ff495068aa10d650d4b314bf4cc8
- [fix] Release notes: github.com https://github.com/warp-tech/warpgate/releases/tag/v0.29.0

## From the sources

Warpgate is an open source SSH, HTTPS, and MySQL bastion host for Linux. From 0.21.0 until 0.29.0, the Kubernetes request correlator in warpgate-protocol-kubernetes/src/correlator.rs keys an authorized AdmittedTarget by username, target_name, and client IP rather than by the immutable user UUID, while KubernetesSessionHandle::close does not evict the entry. If an account is deleted and a different low-privilege account is created with the same username, the replacement account can successfully authenticate as that recreated username and reuse the predecessor's still-live correlation entry when requesting the same target from the same client IP before kubernetes.session_max_age expires. Current-request authentication still occurs, but the reused entry bypasses a fresh target authorization check and can cause Warpgate to proxy requests with Kubernetes target credentials that the replacement account is not authorized to use, exposing cluster resources or permitting unauthorized mutations. This issue is fixed in version 0.29.0.

---

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