GHSA-v8j7-hp7c-738f
MEDIUMGHSA-v8j7-hp7c-738f is a medium-severity (CVSS 6.5) vulnerability in github.com/kubetail-org/kubetail/modules/dashboard. O3 Security confirms whether GHSA-v8j7-hp7c-738f is actually reachable in your code before you act, and blocks exploitation at runtime until you patch.
Kubetail has a Cross-Site WebSocket Hijacking issue that allows attacker to read Kubernetes logs from authenticated users
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.0 |
| 🐹Go | github.com/kubetail-org/kubetail/modules/cli | all versions | 0.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. O3's reachability analysis confirms whether the vulnerable code path is actually invoked in your application, so you act on real exposure instead of every transitive match.
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.
How O3 protects you
O3 pinpoints whether GHSA-v8j7-hp7c-738f is reachable in your code and exactly where to fix it, then blocks exploitation in production at runtime until the patched version is deployed.
Tailored to GHSA-v8j7-hp7c-738f. Runtime protection reduces exposure until a permanent patch is applied and verified — it complements patching, it doesn't replace it.
Frequently Asked Questions
Is GHSA-v8j7-hp7c-738f in your dependencies?
O3 detects GHSA-v8j7-hp7c-738f across Go dependencies and uses function-level reachability to confirm whether the vulnerable code path is actually reachable — not just present. No false positives.