CVE-2026-88978
MediumCVSS 4.3Summary
Hatchet prior to version 0.106.1 lacks a tenant filter in the WorkerStatus gRPC polling path in pkg/repository/durable_events.go. An authenticated tenant worker, knowing another tenant's durable-task UUID, can retrieve matching durable event-log records, leading to cross-tenant data leakage.
Risk Assessment
The risk is data exposure between tenants—an attacker can access information about tasks they are not authorized to see, compromising confidentiality.
Recommendation
Update Hatchet to version 0.106.1, which enforces tenant isolation.
Other vulnerabilities in Hatchet
See all- CVE-2026-84298Low
Hatchet prior to 0.95.3 stores worker-supplied task_external_id values in the durableInvocations routing map before tenant ownership is verified, and callback delivery resolves that map by task UUID without tenant identity. An authenticated tenant worker that knows another tenant's durable task UUID and keeps a stream open on the same dispatcher process can receive that task's durable callback result payload.
- CVE-2026-63342Medium
Hatchet prior to version 0.91.1 lacks a tenant check in the API endpoint GET /api/v1/stable/durable-tasks/{durable-task} defined in api-contracts/openapi/paths/v1/workflow-runs/workflow_run.yaml. An authenticated user who obtains another tenant's durable task UUID can read that task's event log, including task display names, workflow identifiers, user messages, wait conditions, and branching logic.
- CVE-2026-61687High
In Hatchet prior to 0.91.1, ValidateOAuthState clears the oauth_state_ session value to an empty string after a successful OAuth callback and later accepts an empty state parameter as equal, allowing an unauthenticated attacker to bind a victim's Hatchet session to an attacker-controlled OAuth identity.
- CVE-2026-61681Medium
Hatchet before version 0.91.1 has an SSRF vulnerability in the SNS UnsubscribeConfirmation handler. An authenticated tenant can replace the UnsubscribeURL field in a valid AWS-signed message with an internal URL, allowing server-side requests to EC2 Instance Metadata Service, internal services, and internal HTTP APIs. This may expose IAM credentials or network-accessible data and functionality.
- CVE-2026-54746Medium
Hatchet from 0.40.0 until 0.91.1 does not verify that a request's worker ID belongs to the tenant identified by the bearer-token context in Dispatcher/UpsertWorkerLabels and Dispatcher/Unsubscribe. An authenticated owner of any tenant who guesses another tenant's worker UUID can overwrite that worker's affinity labels or disconnect the worker from the dispatcher.
Original NVD description (English source)
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/durable_events.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.

