Database/Container, Kubernetes & orchestration
OpenChoreo: WorkflowRun PUT authorizes on body labels, letting one project rewrite another's run ownership
Impact
The PUT .../workflowruns/{runName} route selects the stored WorkflowRun by the URL path but authorizes the request using the openchoreo.dev/project and openchoreo.dev/component labels submitted in the body. A caller who holds workflowrun:update for any one project or component in the namespace can name someone else's run in the path, submit ownership labels for a scope they do control, and rewrite the victim run's ownership. Every later authorization decision then treats them as the owner: they can read that run's build logs and Kubernetes events, delete it, modify pending spec.workflow.parameters, or wedge it permanently into ComponentValidationFailed. On a shared build platform in front of a GPU fleet that means one team reading another team's build output and tampering with the parameters of a pending build - build logs routinely carry tokens and internal endpoints. The advisory is explicit about the limits: the namespace comes from the URL, so this is cross-project and cross-component inside a single namespace, not anonymous and not cross-tenant across namespaces.
Who can reach it
An authenticated OpenChoreo caller holding workflowrun:update on at least one project or component in the same namespace as the victim run. Not reachable anonymously, and not usable across namespaces.
What to do
Upgrade to 1.0.6, 1.1.7 or 1.2.5 depending on your branch and restart the OpenChoreo API/controller - a control-plane daemon restart, no node disruption and no GPU workload impact. Until then, narrowing workflowrun:update so that a namespace holds only one trust domain removes the cross-project path.
References
Related entries
- sigstore-js: registry-supplied upload Location receives registry credentials, leaking tokens to an attacker hostCVE-2026-118763 · sigstore-js @sigstore/oci RegistryClient (blob upload to registry-supplied Location)High
- BentoML (bentofile.yaml path fields: description, docker.setup_script, docker.dockerfile_templateCVE-2026-24123 · BentoMLHigh
- OpenShift Console: tenant-planted Helm repository makes the console pod fetch arbitrary URLs server-sideCVE-2026-50237 · Red Hat OpenShift Console (Helm catalog proxy, ProjectHelmChartRepository)High
- Envoy Gateway: unauthenticated xDS on port 18000 hands out TLS private keys and full routing configCVE-2026-53714 · Envoy Gateway xDS gRPC server in GatewayNamespaceMode (port 18000)High
- Envoy: stored XSS through unescaped dynamic statistic names on the admin stats pageCVE-2026-73546 · Envoy (admin /stats?format=html StatsHtmlRender)High
- openshift-ansible installer: unverified remote inventory scripts execute with cluster-provisioning privilegesCVE-2026-92092 · openshift-ansible installer container (run script fetches inventory/dynamic scripts over HTTP without verification)High
This entry is curated: imported from vendor advisories with machine assistance, not yet individually verified. Confirm against your vendor's advisory before acting, and report anything wrong.