REDHAT-BUG-2510320: Medium severity Kubernetes API server vulnerability
Finding setDefaultServiceAccount honours, in priority order: (1) modelRun.ServiceAccount from the API request body, (2) the serviceAccountName already embedded in the uploaded Workflow, (3) the configured default. There is no SubjectAccessReview verifying the caller can use serviceaccounts/<name> or impersonate it.
A tenant can set serviceaccount in their CreateRun request to any SA in the namespace – including ds-pipeline-<dspa> (the API server's own SA, which can create workflows and delete pods) or pipeline-runner (which has secrets:get, pods/exec:).
This affects both V1 and V2 paths.
Files:
backend/src/apiserver/template/template.go:309-319 — setDefaultServiceAccount
backend/src/apiserver/template/argotemplate.go:60
backend/src/v2/template/v2template.go:152-153,393
backend/src/common/util/workflow.go:163-165
Framework: OWASP K8s K02; ASVS V4.1.3 CWE: CWE-269 (Improper Privilege Management) / CWE-441 (Confused Deputy) CVSS v3.1: 7.1 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N) – High
Exploitation POST /apis/v2beta1/runs with body {"experimentid":"...","pipelineversionreference":{...},"serviceaccount":"ds-pipeline-<dspa>"} (the API server's own SA). The user container then has that token mounted.
Impact A restricted tenant can run their container under a more-privileged SA simply by setting one field in the API call. Combined with the overprivileged pipeline-runner Role (secrets:get, pods/exec:, kubeflow.org /), a tenant can read every Secret in the namespace and exec into co-tenant pods. The DSP namespace also contains the ml-pipeline (apiserver), mariadb/minio, and operator-managed SAs.
Remediation Before setting serviceAccount, perform SAR {verb: "use", resource: "serviceaccounts", name: serviceAccount, namespace: ns} against the calling user. Or restrict to an allow-list configured by the operator (default pipeline-runner only).
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
Before using the tenant-provided service_account in CreateRun, perform a SubjectAccessReview against the calling user for {verb:"use", resource:"serviceaccounts", name: serviceAccount, namespace: ns}, and reject the request if SAR fails. This addresses missing SAR verification noted as affecting both V1 and V2 paths.
Kubernetes API server (DSP/Argo backend template logic) SubjectAccessReview (SAR) for serviceaccounts use/impersonation = enforce SAR before accepting service_account from CreateRun request - Configuration
Restrict the service_account value accepted in POST /apis/v2beta1/runs (and analogous V1 path) to an operator-configured allow-list; default to allowing only the pipeline-runner service account. This prevents tenants from selecting ds-pipeline-<dspa> or other overprivileged SAs.
Kubernetes Argo/DSP pipeline run service account selection (setDefaultServiceAccount) service_account allow-list/deny-by-default behavior = restrict to an operator-configured allow-list (default pipeline-runner only) - Configuration
Ensure setDefaultServiceAccount cannot select an overprivileged SA based on priority inputs. In particular, when service_account is present in the API request body (priority #1), require the SAR/allow-list check before honoring it; otherwise fall back to embedded Workflow serviceAccountName (priority #2) or configured default (priority #3).
DSP/Argo workflow template defaulting (setDefaultServiceAccount) service_account precedence = honor only the approved/allowed serviceAccount sources
Event History
Frequently Asked Questions
What is the severity of REDHAT-BUG-2510320?
The severity of REDHAT-BUG-2510320 is medium with a risk rating of 4.
How do I fix REDHAT-BUG-2510320?
To address REDHAT-BUG-2510320, implement proper SubjectAccessReview checks for users attempting to use specific service accounts.
What software is affected by REDHAT-BUG-2510320?
REDHAT-BUG-2510320 affects the Kubernetes API server and Kubeflow Pipelines.
What is the main issue described in REDHAT-BUG-2510320?
The main issue in REDHAT-BUG-2510320 is the lack of a SubjectAccessReview that verifies the caller's ability to use specified service accounts.
When was REDHAT-BUG-2510320 published?
REDHAT-BUG-2510320 was published on August 3, 2026.