Kubetail has a Cross-Site WebSocket Hijacking issue that allows attacker to read Kubernetes logs from authenticated usersGHSA-v8j7-hp7c-738f
MEDIUMGHSA-v8j7-hp7c-738f is a medium-severity (CVSS 6.5) CWE-1385 vulnerability in github.com/kubetail-org/kubetail/modules/dashboard. A fix is available for github.com/kubetail-org/kubetail/modules/dashboard — see the affected versions and patch details below.
Exploitation Status
No confirmed exploitation observed yet
- CISA’s own triage has not observed active exploitation or public proof-of-concept code for this CVE as of its last assessment.
Exploitation and automatability from CISA’s SSVC triage for GHSA-v8j7-hp7c-738f.
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
Where this sits among everything scored
Real-World Exposure
github.com/kubetail-org/kubetail/modules/dashboard🐹github.com/kubetail-org/kubetail/modules/cliReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects Go packages — download data is not available via public APIs for these ecosystems.
Description
Summary
Kubetail's dashboard exposes WebSocket endpoints that did not adequately validate the Origin header on connection upgrade. A malicious web page visited by a user with an active Kubetail session could open a WebSocket to the user's dashboard and read their Kubernetes logs in real time. This is a Cross-Site WebSocket Hijacking (CSWSH) vulnerability and affects both the desktop deployment (default http://localhost:7500) and cluster deployments (typically behind an Ingress with HTTP basic auth).
Impact
An attacker who can convince an authenticated Kubetail user to visit a page they control can:
- Establish a WebSocket connection to the victim's dashboard from the attacker's origin
- Stream container logs the victim has access to via the Kubernetes API
- Exfiltrate the contents to an attacker-controlled server
The attacker gains read-only access to logs — no write or destructive operations are exposed. However, container logs frequently contain credentials accidentally written by application code, bearer tokens, internal hostnames, customer PII, and other secrets, so the practical impact of read access can be significant.
The desktop deployment is particularly exposed because the dashboard is reachable at a predictable localhost URL, requires no network reachability from the attacker, and the browser will attach ambient credentials to the WebSocket handshake. For cluster deployments fronted by HTTP basic auth, the browser's automatic re-sending of basic-auth credentials on the WebSocket upgrade request enables the same attack against the configured dashboard origin.
Affected versions
| Component | Name | Affected | Patched |
|---|---|---|---|
| Kubetail Dashboard docker image | kubetail-dashboard | < 0.14.0 | >= 0.14.0 |
| Kubetail Helm Chart | kubetail/kubetail | < 0.23.0 | >= 0.23.0 |
| Kubetail CLI | kubetail | < 0.16.0 | >= 0.16.0 |
Confirmed in Google Chrome. Microsoft Edge is presumed affected as it shares Chromium's WebSocket implementation, but was not directly tested.
Preconditions for exploitation
- The victim has an active authenticated Kubetail session (desktop dashboard running, or browser holding valid credentials for a cluster deployment).
- The victim visits a web page controlled by the attacker in the same browser.
- The attacker knows or can guess the dashboard URL (trivial for desktop; cluster deployments require knowing the Ingress hostname).
Patches
Upgrade to:
- Kubetail Dashboard 0.14.0 or later
- Kubetail Helm Chart 0.23.0 or later
- Kubetail CLI 0.16.0 or later
Workarounds
If users cannot upgrade immediately:
- Desktop: Stop the dashboard (kubetail CLI process) when not actively in use. Avoid visiting untrusted sites in the same browser profile while the dashboard is running.
- Cluster: Restrict Ingress access to a VPN, bastion, or office network. Add a stronger outer authentication layer (e.g. OAuth proxy) in front of basic auth. Consider browser profile isolation for cluster admins.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐹Go | github.com/kubetail-org/kubetail/modules/dashboard | all versions | 0.14.0go get github.com/kubetail-org/kubetail/modules/dashboard@v0.14.0 |
| 🐹Go | github.com/kubetail-org/kubetail/modules/cli | all versions | 0.16.0go get github.com/kubetail-org/kubetail/modules/cli@v0.16.0 |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for github.com/kubetail-org/kubetail/modules/dashboard, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update github.com/kubetail-org/kubetail/modules/dashboard to 0.14.0 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-v8j7-hp7c-738f is resolved across your whole dependency graph.
Workarounds
If you can't upgrade right away: gate or disable the affected feature, validate untrusted input at the boundary, and avoid passing attacker-controlled data into the vulnerable path. O3's runtime protection blocks exploitation in production as an interim safeguard until the upgrade lands.
Frequently Asked Questions
Is GHSA-v8j7-hp7c-738f in your dependencies?
Find it across Go, including transitive dependencies.