CVE-2026-88978: Hatchet DurableTask WorkerStatus gRPC resolves caller-supplied durable-task UUIDs via ListSatisfiedEntries with no tenant_id filter
Cross-tenant disclosure risk on DurableTask bidi RPC
This is a low-severity, low-risk cross-tenant data exposure vuln caused by blindly accepting a durable task id, in addition to a list of node and branch ids that identify records in that task's event log, and returning them to the caller via the handleWorkerStatus polling path.
Impact
This advisory requires an attacker to successfully guess a durable task's external uuid belonging to another tenant. External ids are generated uuid v4s (uuid.New() in Go), 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).
Other sources
Hatchet is a platform for orchestrating background tasks, AI agents, and durable workflows at scale. Prior to 0.106.1, the WorkerStatus gRPC polling path in pkg/repository/durableevents.go passes caller-supplied durable task, node, and branch identifiers to ListSatisfiedEntries without a tenant filter, allowing an authenticated tenant worker that knows another tenant's durable-task UUID to retrieve matching durable event-log records. The UUIDv4 requirement makes exploitation unlikely, and single-tenant deployments are unaffected in practice. This issue is fixed in version 0.106.1.
— NVD
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
go/github.com/hatchet-dev/hatchetto a version that resolves this vulnerability.Fixed in 0.106.1 - Upgrade
Upgrade
Hatchetto a version that resolves this vulnerability.Fixed in 0.106.1
Event History
Frequently Asked Questions
Which deployments are meaningfully exposed?
Multi-tenant Hatchet deployments are exposed if authenticated tenant workers can reach the WorkerStatus gRPC polling path. Single-tenant deployments are unaffected in practice.
What does an attacker need to exploit this issue?
The attacker needs authentication as a tenant worker and knowledge of another tenant's durable-task UUID. The affected lookup also accepts durable task, node, and branch identifiers, and successful exploitation can return matching durable event-log records.
How likely is exploitation?
Exploitation is considered unlikely because the targeted durable-task UUID must be a UUIDv4. The issue has low confidentiality impact and no stated integrity or availability impact.
What version fixes the issue?
Upgrade Hatchet to version 0.106.1 or later. The fix ensures the affected durable-event lookup is scoped with a tenant filter.