Vulnerability

Kubeflow Pipelines Shared Upload Authorization Bypass (CVE-2026-77596)

A missing authorization flaw in the upload endpoints of the Kubeflow Pipelines API server in multi-user mode.

CVE ID
CVE-2026-77596
CVSS
9.6 Critical (CVSS v3.1, GitHub as CNA; NVD lists it as a secondary source); no CVSS 4.0 score in the record or NVD
Affected product
Kubeflow Pipelines API server (multi-user mode), up to and including 2.17.3
Exploited
Unknown
Published
5 November 2026 (CVE record and NVD); GitHub advisory published 28 October 2026

In short

CVE-2026-77596 is a missing authorization flaw in the upload endpoints of the Kubeflow Pipelines API server in multi-user mode. A low-privilege tenant can add pipeline versions that other tenants then run. GitHub, the CNA, scores it CVSS 3.1 9.6 Critical, and the maintainers fixed it in 2.18.0.

Profile MapVulnerability
  1. CVECVE-2026-77596
  2. ProductKubeflow (open source project) Kubeflow Pipelines API server (multi-user mode), up to and including 2.17.3
  3. Fix Steps5actions listedUpgrade to 2.18.0

What it allows

CVE-2026-77596 is an authorization gap in the upload endpoints of the Kubeflow Pipelines API server. Kubeflow Pipelines builds and deploys machine learning workflows. In multi-user mode, the server should check that a caller may write a pipeline before it accepts an upload.

The maintainers say that check is skipped when the target namespace is empty. An empty namespace is how Kubeflow Pipelines addresses shared, cluster-wide pipelines, and it is the default when a caller names no namespace. The setting that would require a namespace defaults to false and is unset in the shipped manifests.

What an Attacker Gains

Per the advisory, a low-privilege tenant can create shared pipelines or add attacker-controlled versions to existing shared pipelines without the write permission. The CVE record adds that an unauthenticated caller can do the same when the API server is reachable without an authenticating proxy. Deployments behind such a proxy do not expose anonymous access.

The advisory's automatic path to code execution needs an enabled recurring run that follows the latest version of the shared pipeline. That run then executes the injected specification in another tenant's namespace, under that workload's service account. Runs pinned to a version, or with an embedded specification, are not substituted automatically.

The maintainers limit the impact. They say execution gets the victim workload's permissions and mounted data, and it does not by itself grant every secret in the namespace or cluster-admin rights. They also say they verified the scheduled-run path by source inspection and did not reproduce it end to end.

We leave out request details on purpose. Our least privilege entry explains the principle this flaw bypasses.

How the Score Reads

GitHub, the CNA, scores it CVSS 3.1 9.6 Critical with vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N. NVD lists GitHub's score as secondary and shows the entry as received on 5 November 2026. There is no CVSS 4.0 score in the record or NVD.

The maintainers say the vector assesses the authenticated tenant scenario. Scope is changed because the consequence reaches a different tenant's namespace and service account. See our CVSS entry for how to read the vector.

What the Maintainers and CISA KEV Say

The advisory says the first fixed release is 2.18.0 and that releases through 2.17.3 remain affected. As of CISA catalog version 2026.11.04, the CVE is not in the Known Exploited Vulnerabilities catalog. Our KEV glossary entry explains the catalog.

Who is affected

The CVE record lists Kubeflow Pipelines before 2.18.0 as affected. The GitHub advisory states the range as 2.17.3 and earlier and names 2.18.0 as the patched version. It lists the kfp-api-server container image as the affected software.

The advisory describes multi-user deployments and says the fix leaves single-user behavior unchanged. After the upgrade, shared uploads that earlier scripts or clients relied on are rejected. Plan client changes before you roll out.

The advisory names two client changes. In the user interface, choose Private for tenant-owned pipelines. In the Python SDK, pass the tenant namespace explicitly on upload. Our vulnerability management guide covers rollout planning.

GitHub credits the reporter as VitoCrl. The maintainers merged the fix into the master branch on 9 September 2026, in pull request 14352.

Timeline

  1. 9 Sep 2026

    The maintainers merge the fix into the master branch in pull request 14352, per the GitHub advisory.

  2. 28 Oct 2026

    Kubeflow Pipelines 2.18.0 is released and the GitHub advisory GHSA-rjr3-43j3-4q8g is published.

  3. 5 Nov 2026

    GitHub publishes the CVE record, and NVD publishes its entry.

What to do

  1. Find Multi-User Kubeflow Pipelines Installs

    List every Kubeflow Pipelines deployment. Note which run in multi-user mode and which expose the API server beyond an authenticating proxy.

  2. Upgrade to 2.18.0

    Move the server and its manifests to 2.18.0, as the advisory says. Read the 2.18 RBAC and client migration guide first, because shared uploads now need an authorized writer.

  3. Apply the Interim Setting if You Cannot Upgrade Yet

    The advisory says operators can set REQUIRE_NAMESPACE_FOR_PIPELINES to true, which rejects empty-namespace pipeline operations. Expect shared uploads to stop working until you upgrade.

  4. Review Shared Pipelines and Recurring Runs

    The advisory warns that the fix does not remove versions uploaded earlier. We recommend reviewing shared pipeline versions and the recurring runs that follow them for unauthorized changes, and pinning those runs to a reviewed version.

  5. Keep the API Server Behind Authentication

    We recommend that clients reach the API server only through an authenticating proxy. The advisory says not to grant blanket system-namespace access to keep old upload scripts working.

Questions

Which Kubeflow Pipelines versions does CVE-2026-77596 affect?

The CVE record lists versions before 2.18.0, and the GitHub advisory states the range as 2.17.3 and earlier. The advisory names 2.18.0 as the first fixed release.

Does an attacker need an account?

The CVSS vector assumes a low-privilege tenant. The CVE record adds that an unauthenticated caller can exploit the same bypass if the API server is reachable without an authenticating proxy.

Is there a workaround before upgrading?

The advisory says operators can set REQUIRE_NAMESPACE_FOR_PIPELINES to true as interim hardening. It warns this has a compatibility impact on shared uploads.

Does upgrading remove pipeline versions added earlier?

No. The advisory says restoring authorization does not remove previously uploaded malicious versions. It tells operators to review shared pipeline versions and consuming recurring runs.

Is CVE-2026-77596 in the CISA KEV catalog?

It is not in catalog version 2026.11.04. The record and the advisory do not state whether the flaw is exploited.

In our research

  1. Five AG-UI Protocol CVEs: Two Are Fixed, Three Are Not November 2026
  2. Three Ways Beta9 Lets a Tenant Escape Its Sandbox November 2026

Sources

  1. CVE-2026-77596 Record CVE Program / GitHub CNA
  2. CVE-2026-77596 NVD
  3. GHSA-rjr3-43j3-4q8g, Missing authorization on shared pipeline uploads in the Kubeflow Pipelines API server Kubeflow Pipelines on GitHub
  4. Kubeflow Pipelines 2.18.0 release notes Kubeflow Pipelines on GitHub
  5. Known Exploited Vulnerabilities Catalog CISA