mediumAgent ThreatPrivilege Abuse

Hatchet Durable Event-Log Cross-Tenant Data Exposure via Unfiltered gRPC Polling

First seen Sep 22, 2026 · Updated Sep 22, 2026 · CVSS 4.3

multi-tenancyidortenant-isolationai-agent-orchestrationgrpcdurable-workflowsinformation-disclosureASI08 · Cascading FailuresSurface: Tool LayerPropagation: None

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. 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. 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. 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. 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

CVE-2026-88978

Industries Most Exposed

softwarecloud infrastructureSaaStechnologyany industry using multi-tenant Hatchet deployments for AI agent orchestration

Sources

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.