Kubeflow Pipelines: Run log streaming endpoint bypasses namespace authorization, exposing pod execution logs cross-tenant
Impact
Kubeflow Pipelines versions before 2.18.0 have a vulnerability where the run log streaming endpoint bypasses namespace authorization, potentially exposing pod execution logs. A caller with access to the backend and knowledge of a victim run ID and node identifier can read logs. The impact may include exposure of sensitive workload data or credentials.
Summarized by @cf/meta/llama-3.3-70b-instruct-fp8-fast. Verify details against the original sources.Affected packages
Start with the recorded fix for your release branch. Check your installed version and test compatibility before upgrading. Fixing this advisory does not rule out other vulnerabilities in the release.
| Affected range | Recorded fix |
|---|---|
| Earlier releases before 0.0.0-20260904182349-be4723e33727Semantic versions | 0.0.0-20260904182349-be4723e33727 |
Version evidence: OSV · GHSA-wg5q-x4j9-qm54
View original version evidence (1 explicit versions)
Affected products
Vendor version evidence. Product records are separate from automatic dependency matching.
kubeflow · GitHub_M
pipelines
1 range
kubeflow · GitHub_M
pipelines
Compare with this publisher’s ranges. This does not inspect your installation.
affected
< 2.18.0
Other versions: unknown
Original source description
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. Versions through 2.17.3 are affected; the first affected release has not been established.
PR #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 discovered and reported the issue. Nayyar (@naruto-lgtm) authored the fix in #13684.
@patchmyday, @thesecguy45, @VitoCrl, @Grg0rry, @arpitjain099, and @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.
Inside the record
Evidence available
Describes the evidence in this view, not whether the product is safe.
Original records
CVE-2026-118759View the latest unmodified CVE JSON from the official source. It may be newer than this imported page.
cve.new JSON →Underlying weaknesses
The source’s classification of what caused the vulnerability.
Contributing organizations · 2
Assigning organization
Additional data publisher
What changed
Follow changes- CVE · CVE-2026-118759
Observed 2026-10-30T19:26:40.201Z · upstream updated 2026-10-30T17:13:29.148Z
Prioritization updated
before
[]
after
[ { "source": "CISA-ADP", "type": "SSVC", "role": "CISA Coordinator", "timestamp": "2026-10-30T15:47:06.206005Z", "decisions": [ { "name": "Exploitation", "value": "none" }, { "name": "Automatable", "value": "yes" }, { "name": "Technical Impact", "value": "partial" } ] } ]
Large field values are marked as truncated previews. Original source snapshots remain retained.
Showing up to 50 most recent observed changes.