GHSA-WG5Q-X4J9-QM54

Vulnerability from github – Published: 2026-10-30 23:13 – Updated: 2026-10-30 23:13
VLAI
Summary
Kubeflow Pipelines: Run-log endpoint permits unauthorized access to pod logs
Details

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.

Show details on source website

{
  "affected": [
    {
      "package": {
        "ecosystem": "Go",
        "name": "github.com/kubeflow/pipelines"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "0"
            },
            {
              "fixed": "0.0.0-20260904182349-be4723e33727"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    },
    {
      "package": {
        "ecosystem": "Go",
        "name": "github.com/kubeflow/pipelines"
      },
      "versions": [
        "1.7.0-alpha.3"
      ]
    }
  ],
  "aliases": [
    "CVE-2026-118759"
  ],
  "database_specific": {
    "cwe_ids": [
      "CWE-200",
      "CWE-862"
    ],
    "github_reviewed": true,
    "github_reviewed_at": "2026-10-30T23:13:29Z",
    "nvd_published_at": "2026-10-29T17:18:06Z",
    "severity": "HIGH"
  },
  "details": "## Summary\n\nThe Kubeflow Pipelines API server\u0027s `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\u0027s permissions.\n\nFor live logs, the vulnerable handler also accepts the supplied node ID as a pod name in the run\u0027s namespace without verifying that the pod belongs to the run. Depending on the API server\u0027s 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.\n\nThe 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.\n\n## Remediation\n\nUpgrade 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.\n\n[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\u0027s `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.\n\nUntil 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.\n\n## Credit\n\n[bugbunny.ai](https://bugbunny.ai) discovered and reported the issue. Nayyar ([@naruto-lgtm](https://github.com/naruto-lgtm)) authored the fix in #13684.\n\n[@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.",
  "id": "GHSA-wg5q-x4j9-qm54",
  "modified": "2026-10-30T23:13:29Z",
  "published": "2026-10-30T23:13:29Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://github.com/kubeflow/pipelines/security/advisories/GHSA-wg5q-x4j9-qm54"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-118759"
    },
    {
      "type": "WEB",
      "url": "https://github.com/kubeflow/pipelines/pull/13684"
    },
    {
      "type": "WEB",
      "url": "https://github.com/kubeflow/pipelines/commit/be4723e33727c6dad71a95cba61e8f61562ab20f"
    },
    {
      "type": "PACKAGE",
      "url": "https://github.com/kubeflow/pipelines"
    },
    {
      "type": "WEB",
      "url": "https://github.com/kubeflow/pipelines/releases/tag/2.18.0"
    }
  ],
  "schema_version": "1.4.0",
  "severity": [
    {
      "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N",
      "type": "CVSS_V3"
    }
  ],
  "summary": "Kubeflow Pipelines: Run-log endpoint permits unauthorized access to pod logs"
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline

Sightings and recorded dates, grouped by day · UTC

JSON
Events included in the timeline

Loading timeline…


    Loading…

    Loading…

    Loading…

    Related by attack behaviour

    Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.