---
id: "CVE-2026-88982"
page: "https://infrastack.ai/live/CVE-2026-88982"
kind: "vulnerability"
aliases: ["CVE-2026-88982"]
title: "Kubeflow Pipelines: cache lets one tenant read or poison another's outputs"
severity: "medium"
cvss: 5.4
epss: null
exploited: false
status: "open"
category: "ai-tooling"
products: []
ecosystems: []
tags: ["ai-tooling", "kubeflow-pipelines", "kubernetes", "machine-learning", "multi-tenant"]
not_affected_if: ["default-config", "kfp-v2-only", "single-tenant"]
published_at: "2026-11-05T23:17:01+00:00"
first_seen_at: "2026-11-05T23:48:40+00:00"
updated_at: "2026-11-05T23:49:49+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-88982", "first_seen_at": "2026-11-05T23:48:40+00:00"}]
exploit_sources: []
---

# Kubeflow Pipelines: cache lets one tenant read or poison another's outputs

Link for people: https://infrastack.ai/live/CVE-2026-88982 (this .md is for agents)

In multi-user Kubeflow Pipelines deployments, the legacy V1 execution cache keys lookups without the namespace and trusts a mutable annotation. A tenant who can submit workloads can read another namespace's cached outputs or seed outputs that get substituted into a later pipeline step.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed Kubeflow Pipelines version against `2.18.0`
- Confirm whether you run multi-user deployments where tenant namespaces share the cache service
- Check whether pipelines use the legacy V1/raw-Argo execution path rather than KFP V2 components

## Fix

- Kubeflow Pipelines: move to `2.18.0`

## Timeline

- 2026-11-05T23:48:40+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-88982

## Documents

- [advisory] Vendor advisory: github.com https://github.com/kubeflow/pipelines/security/advisories/GHSA-2xwh-426q-42c5
- [fix] Patch: github.com https://github.com/kubeflow/pipelines/commit/620d0cc89ae0d042a484a003f8ffe6e9a55d347e
- [fix] Release: github.com https://github.com/kubeflow/pipelines/releases/tag/2.18.0

## From the sources

Kubeflow Pipelines enables users to build and deploy portable, scalable machine learning workflows. Prior to 2.18.0, the legacy V1/raw-Argo execution cache mutating webhook and cache-server storage path hash selected template fields without the Kubernetes namespace, use the key alone for lookups and duplicate checks, and trust the mutable pipelines.kubeflow.org/execution_cache_key annotation when publishing outputs. In multi-user deployments where tenant namespaces share the cache service, a tenant with workload-submission privileges can read another namespace's cached outputs or seed matching outputs that are substituted into a later step. Standard KFP V2 component pods bypass this cache, matching requires the selected template fields and staleness policy, and arbitrary code execution or service availability impact is not established. This issue is fixed in version 2.18.0.

---

_Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai_
