GPU VulnDB

Database/Control plane, storage & DevOps

Temporal Server: k8s compute provider builds a client from caller input, running commands on the Worker Service host

CVSS 8.7CVE-2026-120091Control plane, storage & DevOpscurated

Impact

The k8s compute provider in Temporal's Worker Controller Instance module built its Kubernetes client from the client configuration supplied in the caller's request, and building that client could execute a command of the caller's choosing on the Worker Service host as the server's user. ValidateWorkerDeploymentVersionComputeConfig is registered as a read-only namespace operation, so an authenticated caller with only a read role in a single namespace reaches the provider, and no worker deployment needs to exist. Because the Worker Service process holds the persistence credentials for every namespace plus the cluster's TLS material, the blast radius is the whole Temporal cluster, not the caller's namespace - on a GPU fleet that is the scheduler/orchestration plane for training and batch jobs across tenants. On 1.31.0 through 1.31.2 the compute-provider allowlist does not deny by default, so a stock deployment of those releases is exposed; on 1.31.3+ and 1.32.0+ it denies by default and only deployments that added k8s to workercontroller.compute_providers.enabled are exposed. The 1.30 line does not ship the module.

Who can reach it

Any authenticated Temporal caller holding a read role in any single namespace, over the frontend API. Deployments running with no authorizer at all already grant everyone everything, so this crosses a boundary only where authorization is configured. 1.30 is unaffected.

What to do

Upgrade to Temporal Server 1.31.5 or 1.32.2 (or later in those lines) and restart the frontend/worker services - a rolling restart of the Temporal deployment, no node reboot. If you cannot upgrade immediately, set the dynamic config workercontroller.compute_providers.enabled explicitly so it does not contain k8s, and check every namespace-constrained override as well as the global value, since an override can re-add k8s for one namespace. Verify the deployed version, that the Worker Service is running (it is in the default service set), the effective allowlist value, and whether a custom authorizer lets read-only callers invoke ValidateWorkerDeploymentVersionComputeConfig.

References

Related entries

All Control plane, storage & DevOps entries

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.