CVE-2026-88978: Hatchet DurableTask WorkerStatus gRPC resolves caller-supplied durable-task UUIDs via ListSatisfiedEntries with no tenant_id filter
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.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- 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.