Skip to main content

Temporal Proxy CVE-2026-108126

| EUVDEUVD-2026-102301 MEDIUM
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-10-15 security@temporal.io GHSA-vm4x-rqwp-c27m
6.0
CVSS 4.0 · Vendor: temporal
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate as namespace B caller
  2. Delivery
    Supply captured namespace A ciphertext
  3. Exploit
    Proxy selects key by payload identifier
  4. Execution
    Decrypts across namespace boundary
  5. Impact
    Read cross-namespace plaintext

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
Exploitation Conditions

Exploitation requires that payload encryption be ENABLED on the proxy and that a single proxy be configured with keys for more than one namespace (the flaw is irrelevant for single-namespace deployments or when encryption is off). The attacker must already be authorized for a target namespace B and must have obtained, out of band, a ciphertext encrypted for a different namespace A - the issue does not grant access to any ciphertext the attacker could not already acquire. Two delivery paths exist: on 0.8.0, posting the payload to the codec server's /decode endpoint; on every affected version, writing the payload into namespace B on the Temporal server and reading it back through the proxy. Limiting/mitigating factors: the fix (v0.9.0) introduces namespace binding, and running the codec server in 'strict' mode causes /decode to refuse payloads labeled for a different namespace (400), so deployments on the fixed version in strict mode are not exposed; impact is confined to confidentiality (payloads cannot be altered).

Impact

This is a genuine but bounded authorization/access-control flaw (CWE-639) rated Medium (CVSS 4.0 base 6.0). The vendor-supplied 4.0 vector (AV:N/AC:L/AT:P/PR:L/UI:N/VC:H) is internally consistent with the description: network-reachable, but requiring an already-authorized namespace-B caller (PR:L) plus a specific precondition captured by AT:P - the attacker must already possess an encrypted payload from namespace A. Impact is confidentiality-only (VC:H, VI:N/VA:N), matching the explicit statement that payloads cannot be modified and that no new ciphertext is exposed that the attacker could not already obtain. EPSS, KEV, SSVC, and POC signals are all ABSENT from the input rather than negative: no CISA KEV listing, no public exploit code, and no EPSS probability to corroborate likelihood - so real-world exploitation likelihood cannot be quantified from the data given. The combination of required authorization, a required out-of-band ciphertext, and confidentiality-only impact places this as a legitimate priority for multi-tenant Temporal deployments that rely on per-namespace key isolation, but well below the urgency of a network-unauthenticated RCE. No data conflicts were found: the CVSS vector, the EUVD affected range (0.2.0 to <0.9.0), and the description all agree.

Exploit ScenarioDerived

In a multi-tenant deployment where one temporal-proxy instance holds keys for several namespaces with payload encryption enabled, an operator authorized only for namespace B obtains an encrypted payload originating from namespace A (for example from backups, logs, or shared storage). On 0.8.0 they POST that ciphertext to the codec server's /decode endpoint; on any affected version they write it into a namespace B workflow they control and read it back through the proxy, and the proxy decrypts it because it selects the key by an identifier inside the payload rather than by the requesting namespace. No public exploit code or KEV listing is identified at time of analysis.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 15, 2026

Namespace-binding flaw in temporal-proxy 0.2.0 through 0.8.0 allows an authenticated caller authorized only for namespace B to obtain the decrypted plaintext of a payload that was encrypted for a different namespace A, provided payload encryption is enabled and the single proxy holds keys for more than one namespace. The proxy selects the decryption key from an identifier embedded in the payload rather than from the namespace of the request, and the ciphertext carries no namespace, so on 0.8.0 the caller can submit the payload to the codec server's /decode endpoint, while on every affected version a caller who can also write into namespace B on the Temporal server can place the payload there and read it back through the proxy. Impact is limited to confidentiality - payloads cannot be modified, the flaw grants no access to ciphertexts the attacker could not already obtain, and no public exploit was identified at time of analysis; severity is Medium (CVSS 4.0 base 6.0; independent assessment CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N).

RemediationAI

Upgrade temporal-proxy to the vendor-released fix, v0.9.0, which binds encrypted payloads to the namespace they were encrypted for and adds strict/permissive NamespaceBinding configuration; under strict mode the codec server refuses payloads labeled for another namespace (400) and requests that name no namespace, so enable strict binding unless the deployment relays Nexus operations across namespaces, which requires permissive mode and means accepting logged-but-decoded cross-namespace payloads (monitor vault_namespace_mismatches_total and vault_unbound_opens to detect it). Ensure codec clients pass the Namespace as the Temporal service knows it - the Temporal CLI (verified with 1.9.1) sends X-Namespace from --namespace or a {namespace} path segment, and other clients can set the header explicitly. If an upgrade cannot be made immediately, remove the exposure rather than relying on generic hardening: on 0.8.0 disable or network-restrict the codec server's /decode endpoint so callers cannot submit arbitrary ciphertext, and on all versions restrict which principals may write payloads into a namespace on the Temporal server itself, since that is the second delivery path - both measures incur the trade-off of breaking legitimate decode access or namespace write workflows. Disabling payload encryption removes the flaw entirely but exposes workflow payloads in cleartext at rest and in transit through the proxy, and single-namespace proxies hold only one namespace's keys and are unaffected. Vendor references for the fix: https://github.com/temporalio/temporal-proxy/releases/tag/v0.9.0, https://github.com/temporalio/temporal-proxy/pull/221, https://github.com/temporalio/temporal-proxy/pull/222 and https://github.com/temporalio/temporal-proxy/discussions/146.

Affected VersionsENISA

temporal-proxy 0.2.0 <0.9.0

Affected Packages

euvd temporal_proxy fix: 0.9.0

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Temporal proxy sits in front of a Temporal server and exposes a payload codec server that encrypts and decrypts workflow payloads, using a DEK/KEK hierarchy (see pkg/crypto/dek.go, kek.go and vault.go in the repository) so that keys can be backed by a Vault transit engine. This is CWE-639 (Authorization Bypass Through User-Controlled Key): the decrypt path trusted a key identifier carried inside the payload instead of deriving the key from the namespace context of the request, and the ciphertext recorded no namespace association at all, so a proxy holding keys for several namespaces would happily decrypt namespace A data for a caller scoped to namespace B. Because one proxy instance holds every key it is configured with, the weakness applies whether all namespaces share a default key or each has its own. The fix (commits 508991c298b9ac31915dd7349ffa88d79fad3475 and 6843a2c4626aa2c7f00fbf54e4e9fa98f6254f07, PRs #221 and #222) introduces namespace binding: the codec server compares the Namespace named in the request (X-Namespace header or path segment) against the namespace label on the payload, refuses mismatches with the same generic 400 as any other decode failure under strict mode, supports a permissive mode that decodes cross-namespace payloads while counting them, and exposes vault_ops, vault_unbound_opens and vault_namespace_mismatches metrics for detection. Nexus payloads that legitimately cross namespace boundaries are exempted by design, which is why permissive mode remains necessary for such deployments.

Know when Temporal gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (temporal) PRIMARY 6.0 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 5.3 MEDIUM

Authorized namespace-B caller gives PR:L; needing an out-of-band namespace-A ciphertext is a precondition beyond attacker control (AC:H); only confidentiality is affected (C:H, I:N, A:N).

3.1 AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (temporal).

CVSS VectorVendor: temporal

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

1
Patch available
Oct 15, 2026 - 20:03 EUVD

DescriptionCVE.org

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.

Threat Intelligence Overview

EPSS Score
0.4%
Top 72% exploitable
Prevalence
Low
pre-1.0 proxy add-on, only affects multi-namespace deployments with payload encryption enabled
Data Quality
6 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy