Temporal Server: batcher worker cross-namespace authorization bypass (BatchActivityWithProtobuf)
What's the vulnerability?
The original NVD blurb and several early advisories claimed a frontend gRPC cross-namespace signal bypass. That vector is incorrect — the public frontend authorization interceptor correctly validates Request.Namespace against the caller's claims on both v1.29.4 and v1.29.5.
The actual vulnerability lives in the per-namespace batcher worker (service/worker/batcher/activities.go). BatchActivityWithProtobuf receives a BatchOperationInput protobuf and, on v1.29.4, calls checkNamespaceID(batchParams.NamespaceId). This validates only the namespace ID field, but the activity then forwards batchParams.Request.Namespace (a namespace name) to the internal frontend client. The internal frontend runs with NoopClaimMapper → RoleAdmin, so any namespace string supplied by the attacker is executed unconditionally.
An attacker who holds a valid auth token (writer role) for namespace A can submit a batch operation whose protobuf carries:
NamespaceId= the worker-bound ID for namespace A (passescheckNamespaceID)Request.Namespace= the name of victim namespace B
The batcher worker then signals, cancels, terminates, or resets workflows in namespace B without re-validating the caller's authorization for B.
The bug is authenticated (requires valid credentials for at least one namespace on the cluster). It affects multi-tenant clusters that expose batch operations. The impact is an integrity violation against victim workflows (signal/reset/terminate), not data exfiltration.
Root Cause Analysis
Variant Analysis
Bypass and alternate trigger exploration (if present).
Verify with pruva-verify
Run the Pruva CLI to automatically fetch and execute the reproduction script.
pruva-verify REPRO-2026-00184 pruva-verify CVE-2026-5199 curl -fsSL https://pruva.dev/install.sh | sh Or Run Manually
Download the script
curl -O https://pruva.dev/api/v1/reproductions/REPRO-2026-00184/artifacts/bundle/repro/reproduction_steps.sh Make executable
chmod +x reproduction_steps.sh Run the script
./reproduction_steps.sh How Pruva Reproduced This
Watch the AI agent's step-by-step process.
Loading session...