Vulnerability GHSA-9q4h-f4x5-ffq8

Low Risk
LOW RISK
CVSS Score: 3.1
Score Range: < 4.0
Low severity vulnerabilities (CVSS < 4.0). Hygiene issues that can accumulate but pose lower immediate risk.
5 days ago
September 22, 2026 at 08:40 PM UTC
Hatchet: Cross-tenant durable callback payload disclosure in Hatchet V1 Dispatcher
v0.0.0 - v0.95.2
v0.0.0 - v0.95.2

Summary

Hatchet: Cross-tenant durable callback payload disclosure in Hatchet V1 Dispatcher

Details

Summary

The V1 DurableTask stream handler registers worker-supplied durable task external IDs in an in-memory callback routing map before verifying that the authenticated tenant owns the task. If the tenant-scoped ownership check fails, the handler logs the error and continues, but the map entry persists until the stream closes.

Durable callback delivery resolves the destination stream by task_external_id only, without checking tenant identity. As a result, a tenant A worker that knows a tenant B durable task external UUID can hold its stream open and receive tenant B's durable callback result payload when the callback is delivered on the same dispatcher process.

Impact

This advisory requires an attacker to successfully guess a durable task external UUID belonging to another tenant. Durable task external IDs are generated with uuid.New() (UUIDv4) and are not enumerable across tenants, so exploitation requires prior knowledge of a target task UUID through an out-of-band channel. Thus, while the following environments are impacted, there is an extremely low probability it would be exploited.

Who is impacted. Any Hatchet deployment that hosts more than one tenant on the same instance:

  • Hatchet Cloud (multi-tenant SaaS)
  • Self-hosted Hatchet with multiple internal teams / business units sharing one instance
  • Any deployment where a single tenant's API token can be obtained by an attacker

Single-tenant self-hosted deployments are unaffected in practice (the "victim" and "attacker" tenants would be the same).

Timeline

Published
5 days ago
September 22, 2026 at 08:40 PM UTC
Last Modified
5 days ago
September 22, 2026 at 09:00 PM UTC