Description
Hatchet is a platform for orchestrating background tasks, AI agents, and durable workflows at scale. 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. Exploitation requires the victim to have completed an OAuth flow in the current session and the deployment to enable auth.google.enabled, auth.github.enabled, or the Slack integration. This issue is fixed in version 0.91.1.
Published: 2026-09-21
Score: 7.1 High
EPSS: n/a
KEV: No
Impact: Account takeover
Action: Immediate Patch
AI Analysis

Impact

The vulnerability arises from the ValidateOAuthState function in Hatchet’s authentication flow. After a successful OAuth callback, the function clears the oauth_state_ session value to an empty string, then later accepts an empty state parameter as equal to the cleared value. Because the state parameter is not regenerated per request, an unauthenticated attacker can perform an empty-state collision, causing the victim’s Hatchet session to be linked to the attacker’s OAuth identity. This binding effectively lets the attacker impersonate the victim within Hatchet, granting unauthorized access to all resources and actions the victim can perform.

Affected Systems

Hatchet’s open‑source platform, developed by hatchet-dev, is affected in all releases prior to 0.91.1. The issue exists when deployment enables any of the OAuth integrations listed: Google, GitHub, or Slack. The fix was delivered in release 0.91.1, which enforces proper state handling and disallows empty state collisions. Therefore, any deployment running a pre‑0.91.1 version with an active OAuth integration is vulnerable.

Risk and Exploitability

The CVSS score of 7.1 indicates a high severity, and the vulnerability is not listed in the CISA KEV catalog. EPSS data is not available, so the current exploitation probability is unknown. The attack requires the victim to have completed an OAuth flow in the current session, making the attack possible only during an active user session, but once achieved, it provides the attacker with full account access. Given the potential impact and the lack of a mitigation in user‑controlled environments, the risk remains high until the vendor releases a patch.

Generated by OpenCVE AI on September 21, 2026 at 17:23 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Hatchet to version 0.91.1 or later, which implements proper OAuth state validation.
  • If an upgrade cannot be performed immediately, temporarily disable the OAuth integrations (auth.google.enabled, auth.github.enabled, or Slack) that depend on ValidateOAuthState until the patch is applied.
  • After disabling the integrations, re‑enable them only after confirming the upgrade, and monitor for any unauthorized session bindings.

Generated by OpenCVE AI on September 21, 2026 at 17:23 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-phg3-3g28-wq9v Hatchet - Unauthenticated OAuth state CSRF / login-CSRF via empty-state collision in ValidateOAuthState
History

Mon, 21 Sep 2026 17:45:00 +0000

Type Values Removed Values Added
First Time appeared Hatchet-dev
Hatchet-dev hatchet
Vendors & Products Hatchet-dev
Hatchet-dev hatchet

Mon, 21 Sep 2026 16:00:00 +0000

Type Values Removed Values Added
Description Hatchet is a platform for orchestrating background tasks, AI agents, and durable workflows at scale. 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. Exploitation requires the victim to have completed an OAuth flow in the current session and the deployment to enable auth.google.enabled, auth.github.enabled, or the Slack integration. This issue is fixed in version 0.91.1.
Title hatchet - Unauthenticated OAuth state CSRF / login-CSRF via empty-state collision in ValidateOAuthState
Weaknesses CWE-1275
CWE-287
CWE-352
CWE-384
References
Metrics cvssV3_1

{'score': 7.1, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:N'}


Subscriptions

Hatchet-dev Hatchet
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-21T15:45:27.610Z

Reserved: 2026-07-10T18:36:58.849Z

Link: CVE-2026-61687

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-21T16:17:09.997

Modified: 2026-09-21T16:17:09.997

Link: CVE-2026-61687

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-21T17:30:18Z

Weaknesses
  • CWE-1275

    Sensitive Cookie with Improper SameSite Attribute

  • CWE-287

    Improper Authentication

  • CWE-352

    Cross-Site Request Forgery (CSRF)

  • CWE-384

    Session Fixation