Kubeflow Pipelines: Pipeline archive upload allows decompression bomb to exhaust server memory
CVE-2026-118761 · GHSA-8fmv-6rg5-5924 · 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-118761?
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-20260831164314-ba9ae72cc860github.com/kubeflow/pipelines(Go) = 1.7.0-alpha.3
How to check
- Run
go list -m github.com/kubeflow/pipelinesin your project to see the installed version, including copies pulled in by other packages. - 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.
- On < 0.0.0-20260831164314-ba9ae72cc860: Upgrade
github.com/kubeflow/pipelinesto 0.0.0-20260831164314-ba9ae72cc860 or later, commit the lockfile and redeploy. - No fixed version of
github.com/kubeflow/pipelinesyet. Replace or remove it, or apply the workaround in the advisory below. - 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 decompresses uploaded pipeline archives without adequately bounding expanded data in affected versions. A small ZIP or gzip-compressed tar archive can consume disproportionately large amounts of memory while the server locates or reads the pipeline file, potentially exhausting API-server resources and interrupting service.
Multipart pipeline and pipeline-version upload processing decompresses the archive before namespace authorization, so a caller who can reach those endpoints does not need a successful pipeline-create authorization decision to trigger the issue. External authentication and network controls can restrict reachability. URL-import handlers authorize before fetching and decompressing a remote archive.
The amount of expansion needed to exhaust memory depends on deployment resource limits and concurrent activity; no particular archive is guaranteed to crash every deployment.
## 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 #14171](https://github.com/kubeflow/pipelines/pull/14171) bounds compressed input and extracted pipeline data. [PR #14186](https://github.com/kubeflow/pipelines/pull/14186) strengthens the total tar traversal budget, including metadata and skipped entries. The 2.18 release also includes configurable upload and specification limits; operators should review the shipped settings and resource budget. These controls address pipeline archive amplification and do not establish general HTTP-body, temporary-disk, concurrency, or CPU limits.
Until upgrading, restrict access to upload and import endpoints and apply deployment-level request and resource controls. A compressed upload-size limit alone does not prevent decompression amplification. Regression tests cover compressed input, selected-entry boundaries, and tar traversal budgets; no deployed-server OOM test was performed for this assessment.
## Credit
[bugbunny.ai](https://bugbunny.ai) discovered and reported the issue. Ayush Gupta ([@Ayush-kathil](https://github.com/Ayush-kathil)) authored the archive fixes in #14171 and #14186, with Jeff Spahr ([@jeffspahr](https://github.com/jeffspahr)) contributing regression coverage to #14171.
[@BrianWillows](https://github.com/BrianWillows) later submitted a mixed report that included source analysis of pipeline-archive decompression.
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
- github.com/kubeflow/pipelines/security/advisories/GHSA-8fmv-6rg5-5924
- nvd.nist.gov/vuln/detail/CVE-2026-118761
- github.com/kubeflow/pipelines/pull/14171
- github.com/kubeflow/pipelines/pull/14186
- github.com/kubeflow/pipelines/commit/1121d9a081fdf9e2107c39abb2cd8947727c6953
- github.com/kubeflow/pipelines/commit/ba9ae72cc860e3afbea232185e4132fc2896cac5
- github.com/kubeflow/pipelines/releases/tag/2.18.0
- github.com/advisories/GHSA-8fmv-6rg5-5924
- github.com/kubeflow/pipelines
Merged from GitHub Advisory Database, OSV. Last updated 1 Nov 2026. All vulnerabilities · RSS · JSON