high · 7.5 Partly patched

Kubeflow Pipelines: Run-log endpoint permits unauthorized access to pod logs

CVE-2026-118759 · GHSA-wg5q-x4j9-qm54 · published 30 Oct 2026

How serious is it

  • Severity: high, CVSS score 7.5 out of 10.
  • No exploit prediction (EPSS) score yet.
  • Not on the CISA list of exploited vulnerabilities.
  • No public exploit in Exploit-DB.

Is your app affected by CVE-2026-118759?

Paste this prompt into Claude Code, Cursor or any AI coding tool: it runs a free Shippable scan of your project and fixes what it finds. Built with Lovable, Bolt or v0? Scan your live app. Or upload your package file.

Who is affected

  • github.com/kubeflow/pipelines (Go) < 0.0.0-20260904182349-be4723e33727
  • github.com/kubeflow/pipelines (Go) = 1.7.0-alpha.3

How to check

  1. Run go list -m github.com/kubeflow/pipelines in your project to see the installed version, including copies pulled in by other packages.
  2. Or paste your lockfile into the checker: it lists every package with a known vulnerability, this one included.

How to fix

Copies a prompt for Claude Code, Cursor or Codex: it checks your lockfiles for this and upgrades it.
  1. On < 0.0.0-20260904182349-be4723e33727: Upgrade github.com/kubeflow/pipelines to 0.0.0-20260904182349-be4723e33727 or later, commit the lockfile and redeploy.
  2. No fixed version of github.com/kubeflow/pipelines yet. Replace or remove it, or apply the workaround in the advisory below.
  3. If a vulnerable version was live, check your logs and rotate the secrets that server could read.

The advisory

## Summary The Kubeflow Pipelines API server's `GET /apis/v1alpha1/runs/{run_id}/nodes/{node_id}/log` handler retrieves logs without authorizing the caller against the selected run. A caller who can reach the backend and knows a victim run ID and a suitable pod or node identifier can read live or archived logs using the API server's permissions. For live logs, the vulnerable handler also accepts the supplied node ID as a pod name in the run's namespace without verifying that the pod belongs to the run. Depending on the API server's pod-log permissions, a known run ID can therefore permit reading the `main` container logs of an unrelated pod in that namespace. Logs may contain sensitive workload data or credentials. The affected handler does not authenticate the request itself. An external authentication gate or network policy can restrict reachability; public ingress exposure and unauthenticated enumeration of run IDs are not assumed. ## Remediation Upgrade the API server to **[Kubeflow Pipelines 2.18.0](https://github.com/kubeflow/pipelines/releases/tag/2.18.0)**. Versions through 2.17.3 are affected; the first affected release has not been established. [PR #13684](https://github.com/kubeflow/pipelines/pull/13684) authorizes the caller with the `readLog` verb before retrieving live or archived logs. For live logs, it also verifies that the pod's `pipeline/runid` label matches the requested run. Custom Kubernetes roles must grant `readLog` on `runs` in the `pipelines.kubeflow.org` API group; the bundled viewer and editor roles include it. Shared read access alone does not grant log access. Until upgrading, restrict access to the backend log endpoint. Focused regression tests cover authorization denial, HTTP identity propagation, pod/run mismatch, archive retrieval, and cancellation; no new deployed-cluster end-to-end test was performed for this assessment. ## Credit [bugbunny.ai](https://bugbunny.ai) discovered and reported the issue. Nayyar ([@naruto-lgtm](https://github.com/naruto-lgtm)) authored the fix in #13684. [@patchmyday](https://github.com/patchmyday), [@thesecguy45](https://github.com/thesecguy45), [@VitoCrl](https://github.com/VitoCrl), [@Grg0rry](https://github.com/Grg0rry), [@arpitjain099](https://github.com/arpitjain099), and [@BrianWillows](https://github.com/BrianWillows) made later submissions concerning the run-log authorization gap. **MUTEDCYBERSECURITY S.L.** separately reported a synthetic two-tenant reproduction, including the unrelated-pod log path.

Check your whole app

Dependencies are only half of it. Free and read-only: before you push, run npx shippable-dev scan localhost:3000 in your project folder, no account needed. For your live app, you prove it's yours with a one-line tag first.

References

Merged from GitHub Advisory Database, OSV. Last updated 31 Oct 2026. All vulnerabilities · RSS · JSON