Hatchet Durable Event-Log Cross-Tenant Data Exposure via Unfiltered gRPC Polling
First seen Sep 22, 2026 · Updated Sep 22, 2026 · CVSS 4.3
Hatchet, a platform used to orchestrate AI agent workflows and background tasks, had a flaw where its WorkerStatus gRPC polling endpoint failed to enforce tenant filtering on durable-task lookups. An authenticated worker from one tenant who guesses or otherwise obtains another tenant's durable-task UUID could retrieve that tenant's event-log records. Exploitation requires knowledge of a valid UUIDv4, which limits real-world risk, and single-tenant deployments are unaffected.
Technical Analysis
The vulnerability resides in pkg/repository/durable_events.go, where the WorkerStatus gRPC polling path passes caller-supplied durable task, node, and branch identifiers directly to ListSatisfiedEntries without scoping the query to the requesting tenant. Because authentication only verifies the caller is a valid worker (not that they own the specific durable-task UUID being queried), any authenticated tenant can attempt to access cross-tenant durable event-log data by supplying an arbitrary UUID. This is an IDOR-style broken object-level authorization issue at the orchestration/tool layer that governs AI agent task state, and it crosses tenant boundaries within a shared multi-tenant Hatchet deployment. The practical impact is limited by the difficulty of guessing valid UUIDv4 durable-task identifiers, but successful exploitation would leak workflow/agent execution state belonging to another tenant.
Affected Systems
Hatchet; protocols: gRPC
Detection Signatures
- Unusual gRPC WorkerStatus polling requests referencing durable-task, node, or branch identifiers not previously associated with the requesting tenant/worker
- Repeated or high-volume UUID guessing patterns against ListSatisfiedEntries or WorkerStatus endpoints
- Log entries showing successful ListSatisfiedEntries responses for task IDs outside a tenant's known workflow set
- Anomalous cross-tenant access in durable_events.go query logs
Remediation Steps
- 1
Upgrade Hatchet
Update to Hatchet version 0.106.1 or later, which adds proper tenant filtering to the durable event-log lookup path.
- 2
Enforce tenant-scoped authorization
Audit all gRPC repository query paths (not just durable_events.go) to ensure every caller-supplied identifier is validated against the requesting tenant's ownership before query execution.
- 3
Monitor for cross-tenant probing
Add logging/alerting for ListSatisfiedEntries or WorkerStatus calls that reference durable-task UUIDs not previously issued to the requesting tenant.
- 4
Rotate/audit exposed identifiers
For multi-tenant deployments prior to the patch, review logs for anomalous access patterns and consider treating any potentially exposed durable-task UUIDs as compromised.
CVE / Advisory IDs
Industries Most Exposed
Respond to this threat
Pro subscribers get a full AI-generated incident-response playbook for this threat — detection, containment, eradication, and recovery steps — plus an unlimited AI Threat Advisor for questions about your environment.