CVE-2026-89139
Wolfi vulnerability analysis and mitigation

Overview

CVE-2026-89139 is an OS command injection vulnerability in Temporal Server's Worker Service that allows an authenticated attacker with only a namespace write role to execute arbitrary commands on the Worker Service host. It affects go.temporal.io/server versions 1.31.0 through 1.31.2 (fixed in 1.31.3 and 1.32.0). The vulnerability was published on September 21, 2026, and carries a CVSS v4.0 base score of 8.7 (High) (GitHub Advisory).

Technical details

The root cause is a combination of CWE-78 (OS Command Injection), CWE-749 (Exposed Dangerous Method or Function), and CWE-1188 (Insecure Default Initialization of Resource). Temporal Server compiles a Worker Controller Instance (WCI) module into its Worker Service; this module registers a compute provider named subprocess that launches workers by executing a caller-supplied program name and argument vector directly on the host. Critically, the compute provider allowlist (workercontroller.compute_providers.enabled) defaults to an unset list, and the allowlist check is skipped entirely when unset — meaning every registered provider, including subprocess, is permitted by default. Exploitation is immediate: the configuration handler invokes all providers via the invoke strategy immediately after validating the submitted specification, requiring no deferred trigger such as a scaling event or task arrival (GitHub Advisory, temporal-auto-scaled-workers PR #129).

Impact

A successful exploit grants the attacker arbitrary OS command execution on the Worker Service host under the account the server process runs as. Because the Worker Service process holds persistence credentials for every namespace in the cluster and the cluster's TLS material, the attacker's access escalates beyond their assigned namespace to the entire cluster — enabling credential theft, data exfiltration across all namespaces, and potential full cluster compromise. Confidentiality, integrity, and availability of the vulnerable system are all rated High (GitHub Advisory).

Exploitability

There is no public proof-of-concept exploit and no evidence of in-the-wild exploitation at the time of disclosure (GitHub Advisory). The NVD SSVC assessment rates exploitation as "none" and automatable as "no," though technical impact is rated "total." The vulnerability requires authenticated access with a write role in at least one namespace, and authorization must be configured (deployments with no authorizer already grant unrestricted access, so the namespace boundary this crosses does not exist in that case). No threat actor attribution or CISA KEV listing has been identified.

Exploitation steps

  1. Obtain namespace write access: Acquire credentials for an account holding a write role in any namespace on the target Temporal cluster (e.g., via a compromised developer account, leaked API key, or a free/trial namespace).
  2. Verify affected version: Confirm the target is running Temporal Server 1.31.0–1.31.2 with the Worker Service active (default in stock deployments) and that workercontroller.compute_providers.enabled is unset or includes subprocess.
  3. Craft a malicious worker deployment version: Using the Temporal API or CLI, submit a SetWorkerDeploymentVersion (or equivalent) request that configures a scaling group's compute provider type as subprocess, supplying an attacker-controlled program name and argument vector in the compute provider configuration.
  4. Trigger immediate execution: The configuration handler validates and immediately invokes all configured providers — no additional trigger is needed. The Worker Service executes the specified command on its host under the server process account.
  5. Escalate to cluster-wide access: Extract persistence credentials and TLS material accessible to the Worker Service process to pivot to other namespaces or cluster infrastructure (GitHub Advisory).

Indicators of compromise

  • Logs: Worker Service logs showing unexpected subprocess invocations during worker deployment version configuration operations; log entries referencing subprocess compute provider execution with unusual program names or argument vectors.
  • Process: Unexpected child processes spawned by the Temporal Worker Service process (e.g., shells like /bin/bash, sh, cmd.exe, or network utilities like curl, wget, nc) immediately following a deployment version configuration API call.
  • Network: Outbound connections from the Worker Service host to unknown external IPs or C2 infrastructure shortly after a SetWorkerDeploymentVersion or equivalent API call.
  • Configuration Artifacts: Worker deployment versions in any namespace where a scaling group's compute provider type is set to subprocess — detectable by calling DescribeWorkerDeploymentVersion for each version in each namespace and inspecting the compute provider type field (GitHub Advisory).

Mitigation and workarounds

Upgrade to Temporal Server v1.31.3 or v1.32.0, which include the fix that changes the default compute provider allowlist behavior to deny-by-default (empty list) rather than permit-all when unset (v1.31.3 Release, v1.32.0 Release). As an immediate workaround on unpatched deployments, explicitly set the per-namespace dynamic configuration workercontroller.compute_providers.enabled to an empty list or a list that excludes subprocess for every namespace. Additionally, restrict write role assignments to trusted users only, and audit existing worker deployment versions using DescribeWorkerDeploymentVersion to check for any scaling group already configured with the subprocess compute provider type (GitHub Advisory).

Additional resources


SourceThis report was generated using AI

Related Wolfi vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-89139HIGH8.7
  • Wolfi logoWolfi
  • temporal
NoNoSep 21, 2026
CVE-2026-65651HIGH8.7
  • Wolfi logoWolfi
  • temporal
NoNoSep 21, 2026
CVE-2026-71543HIGH7.5
  • Wolfi logoWolfi
  • openbao
NoYesSep 21, 2026
CVE-2026-87858HIGH7.2
  • Wolfi logoWolfi
  • temporal
NoNoSep 21, 2026
CVE-2026-16652HIGH7.1
  • Wolfi logoWolfi
  • temporal
NoNoSep 21, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management