Payload decryption not bound to namespace in temporal-proxy
Key facts
- Attack vector
- Network
- Privileges required
- Low
- User interaction
- None
- Attack complexity
- Low
- Attack requirements
- Present
- Impact type
- Security bypass
- Confidentiality · integrity · availability
- High · None · None
- Fix status
- Fixed
Attack profile from CVSS 4.0 · CNA. Fix status from CNA. Impact type from CWE-639.
Summary
temporal-proxy versions 0.2.0 before 0.9.0 do not bind encrypted payloads to the namespace they were encrypted for. The proxy selects the decryption key from an identifier stored in the payload rather than from the request's namespace, so a caller authorized only for namespace B can have the proxy decrypt a payload obtained from namespace A. In every affected version, a caller who can also write to namespace B on the Temporal server can place the payload there and read it back through the proxy. The attacker must already hold the encrypted payload, and the flaw does not allow payloads to be modified (CWE-639).
Written with Claude Haiku 5.5 from the sources below · 2026-10-28
Description from the CNA
temporal-proxy 0.2.0 through 0.8.0 does not bind encrypted payloads to the namespace they were encrypted for. When payload encryption is enabled, the proxy chooses the decryption key by an identifier stored in the payload rather than by the namespace of the request, and nothing in the ciphertext records that namespace. A caller whom the proxy authorizes only for namespace B, and who has obtained an encrypted payload from namespace A, can therefore have the proxy decrypt it. In 0.8.0, the caller can submit the payload to the codec server's /decode endpoint. In every affected version, a caller who can also write to namespace B on the Temporal server directly can place the payload there and read it back through the proxy. This holds whether namespaces share the default key or each has its own, because a single proxy holds every key it is configured with. The issue does not give the attacker encrypted payloads they could not already obtain, and does not allow encrypted payloads to be modified.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| Temporal Technologies, Inc. | temporal-proxy | 0.2.0 to before 0.9.0 | 0.9.0 | Patch available | CNA |
- temporal-proxy VendorTemporal Technologies, Inc. Affected 0.2.0 to before 0.9.0 Fixed in 0.9.0 Patch available CNA
Remediation
Upgrade temporal-proxy to version 0.9.0.
Written with Claude Haiku 5.5 from the sources below · 2026-10-28
- Fix · CNA temporal-proxy (Temporal Technologies, Inc.) Fixed in 0.9.0
Timeline
- 2026-10-16 Threatist record created from CVE-2026-108126
- 2026-10-16 CISA SSVC decision points changed
- 2026-10-16 Priority changed: MEDIUM → LOW
References
Other 5
- Vault.Open in temporal-proxy 0.8.0, which takes no namespace
- KEKRegistry.Decrypt in temporal-proxy 0.8.0, which selects the KEK by the identifier in the payload
- AES-256-GCM sealed and opened with no associated data in temporal-proxy 0.8.0
- Design discussion of associated data in the payload encryption scheme
- temporal-proxy 0.9.0
More Temporal Technologies, Inc. vulnerabilities
- TI-2026-63861 s2s-proxy accepts untrusted client certificates CVSS 4.0CRITICAL 9.3
- TI-2026-46800 temporalio/tchannel-go zero-chunk call fragment causes process termination CVSS 4.0HIGH 8.7
- TI-2026-46799 temporalio/tchannel-go malformed checksum type causes process termination CVSS 4.0HIGH 8.7
- TI-2026-46801 temporalio/ringpop-go fails to enforce configured label limits on inbound membership gossip CVSS 4.0HIGH 8.7
- TI-2026-13897 temporalio/sqlparser malformed MySQL version comments can cause a panic CVSS 4.0HIGH 8.7
- TI-2026-84119 Temporal Server k8s compute provider lets callers run host commands CVSS 4.0HIGH 8.7
Sources
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences