{"id":"CVE-2026-118761","kind":"vulnerability","aliases":["CVE-2026-118761"],"related":[],"title":"Kubeflow Pipelines: crafted archive uploads exhaust API server memory","description":"Kubeflow Pipelines enables users to build and deploy portable, scalable machine learning workflows. Prior to 2.18.0, the API server decompressed uploaded pipeline archives without adequately bounding expanded data while locating or reading the pipeline file. A small ZIP or gzip-compressed tar archive can consume disproportionately large memory and exhaust API-server resources. Multipart pipeline and pipeline-version upload processing performs decompression before namespace authorization, so a reachable caller does not need a successful pipeline-create authorization decision. URL-import handlers authorize before fetching and decompressing a remote archive. The amount of expansion required to interrupt service depends on deployment resource limits and concurrent activity, and no specific archive is guaranteed to crash every deployment. This issue is fixed in version 2.18.0.","summary":"Kubeflow Pipelines before 2.18.0 decompresses uploaded pipeline ZIP or gzip-tar archives without bounding the expanded size, so a small archive can consume large amounts of memory. Multipart uploads decompress before namespace authorization, so a reachable caller can exhaust the API server without pipeline-create permission.","severity":"high","cvss":7.5,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["kubeflow-pipelines","kubernetes","machine-learning","package"],"not_affected_if":["upload-endpoint-not-reachable","version-2.18.0-or-later"],"how_to_check":"- Check the Kubeflow Pipelines version deployed, for example the `ml-pipeline-api-server` image tag, and see whether it is below `2.18.0`.\n- Check whether the API server's network path (ingress or service) is reachable by callers outside the trusted namespace.","fix":"- Kubeflow Pipelines: move to `2.18.0`.","status":"open","published_at":"2026-10-29T17:18:06+00:00","first_seen_at":"2026-10-29T17:26:17+00:00","triaged_at":"2026-10-29T17:27:51+00:00","updated_at":"2026-10-29T17:27:51+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-29T17:27:51Z","model":"claude-haiku-5-5","output":{"fix":"- Kubeflow Pipelines: move to `2.18.0`.","reach":"network","title":"Kubeflow Pipelines: crafted archive uploads exhaust API server memory","impact":"low","summary":"Kubeflow Pipelines before 2.18.0 decompresses uploaded pipeline ZIP or gzip-tar archives without bounding the expanded size, so a small archive can consume large amounts of memory. Multipart uploads decompress before namespace authorization, so a reachable caller can exhaust the API server without pipeline-create permission.","audience":"businesses","category":"package","nicknames":[],"who_cares":["kubeflow-pipelines","kubernetes","machine-learning"],"confidence":0.7,"fix_status":"available","needs_auth":"no","worst_case":"API server resources exhausted, causing denial of service","analyst_note":"","how_to_check":"- Check the Kubeflow Pipelines version deployed, for example the `ml-pipeline-api-server` image tag, and see whether it is below `2.18.0`.\n- Check whether the API server's network path (ingress or service) is reachable by callers outside the trusted namespace.","plain_action":"","needs_analyst":false,"not_affected_if":["version-2.18.0-or-later","upload-endpoint-not-reachable"],"who_is_affected":"Teams running Kubeflow Pipelines before 2.18.0 where the API server accepts pipeline uploads from callers who can reach it. The sources say the impact depends on resource limits and concurrent load, so the exact threshold per deployment is unknown. Deployments that do not expose upload endpoints to untrusted callers have less exposure.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000734,"input_tokens":4296,"output_tokens":609,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-118761':12A,15A '-2026':11A,14A '2.18.0':27B,87C,198C 'activ':181C 'adequ':96C 'amount':49B,167C 'api':7A,65B,89C,124C 'api-serv':123C 'archiv':4A,36B,45B,94C,115C,165C,185C 'author':57B,139C,152C,158C 'bound':38B,97C 'build':77C 'caller':61B,143C 'compress':113C 'concurr':180C 'consum':47B,117C 'craft':3A 'crash':189C 'creat':70B,151C 'cve':10A,13A 'data':99C 'decis':153C 'decompress':28B,54B,91C,136C,162C 'depend':174C 'deploy':79C,176C,191C 'disproportion':118C 'enabl':74C 'everi':190C 'exhaust':6A,63B,122C 'expand':40B,98C 'expans':169C 'fetch':160C 'file':106C 'fix':195C 'guarante':187C 'gzip':34B,112C 'gzip-compress':111C 'gzip-tar':33B 'handler':157C 'import':156C 'interrupt':172C 'issu':193C 'kubeflow':1A,17B,24B,72C 'kubeflow-pipelin':16B 'kubernet':19B 'larg':48B,119C 'learn':22B,83C 'limit':178C 'locat':101C 'machin':21B,82C 'machine-learn':20B 'memori':9A,51B,120C 'multipart':52B,127C 'namespac':56B,138C 'need':146C 'packag':23B 'perform':135C 'permiss':71B 'pipelin':2A,18B,25B,30B,69B,73C,93C,105C,128C,131C,150C 'pipeline-cr':68B,149C 'pipeline-vers':130C 'portabl':80C 'prior':85C 'process':134C 'reachabl':60B,142C 'read':103C 'remot':164C 'requir':170C 'resourc':126C,177C 'scalabl':81C 'server':8A,66B,90C,125C 'servic':173C 'size':41B 'small':44B,108C 'specif':184C 'success':148C 'tar':35B,114C 'upload':5A,29B,53B,92C,133C 'url':155C 'url-import':154C 'user':75C 'version':132C,197C 'without':37B,67B,95C 'workflow':84C 'zip':31B,109C","nicknames":[],"mitigations":[],"who_affected":"Teams running Kubeflow Pipelines before 2.18.0 where the API server accepts pipeline uploads from callers who can reach it. The sources say the impact depends on resource limits and concurrent load, so the exact threshold per deployment is unknown. Deployments that do not expose upload endpoints to untrusted callers have less exposure.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"first_public_at":"2026-10-29T17:18:06+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-118761","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-118761","severity":null,"published_at":"2026-10-29T17:18:06+00:00","modified_at":"2026-10-29T17:18:06+00:00","first_seen_at":"2026-10-29T17:26:17+00:00","fetched_at":"2026-10-29T17:26:17+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}