{"api_version":"1","generated_at":"2026-10-13T20:42:55+00:00","cve":"CVE-2026-61687","urls":{"html":"https://cve.report/CVE-2026-61687","api":"https://cve.report/api/cve/CVE-2026-61687.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-61687","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-61687"},"summary":{"title":"hatchet - Unauthenticated OAuth state CSRF / login-CSRF via empty-state collision in ValidateOAuthState","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.","state":"PUBLISHED","assigner":"GitHub_M","published_at":"2026-09-21 16:17:09","updated_at":"2026-09-24 21:25:27"},"problem_types":["CWE-287","CWE-352","CWE-384","CWE-1275","CWE-287 CWE-287: Improper Authentication","CWE-352 CWE-352: Cross-Site Request Forgery (CSRF)","CWE-384 CWE-384: Session Fixation","CWE-1275 CWE-1275: Sensitive Cookie with Improper SameSite Attribute"],"metrics":[{"version":"3.1","source":"security-advisories@github.com","type":"Secondary","score":"7.1","severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:N","data":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:N","baseScore":7.1,"baseSeverity":"HIGH","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"REQUIRED","scope":"UNCHANGED","confidentialityImpact":"LOW","integrityImpact":"HIGH","availabilityImpact":"NONE"}},{"version":"3.1","source":"CNA","type":"DECLARED","score":"7.1","severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:N","data":{"attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":7.1,"baseSeverity":"HIGH","confidentialityImpact":"LOW","integrityImpact":"HIGH","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"REQUIRED","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:N","version":"3.1"}}],"references":[{"url":"https://github.com/hatchet-dev/hatchet/security/advisories/GHSA-phg3-3g28-wq9v","name":"https://github.com/hatchet-dev/hatchet/security/advisories/GHSA-phg3-3g28-wq9v","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://github.com/hatchet-dev/hatchet/commit/f90464189ad642251e09412d0f99fde353036428","name":"https://github.com/hatchet-dev/hatchet/commit/f90464189ad642251e09412d0f99fde353036428","refsource":"security-advisories@github.com","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-61687","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-61687","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"hatchet-dev","product":"hatchet","version":"affected < 0.91.1","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"61687","cve":"CVE-2026-61687","epss":"0.001710000","percentile":"0.057630000","score_date":"2026-09-25","updated_at":"2026-09-26 00:06:19"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"adp":[{"metrics":[{"other":{"content":{"id":"CVE-2026-61687","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","timestamp":"2026-09-21T19:40:30.611465Z","version":"2.0.3"},"type":"ssvc"}}],"providerMetadata":{"dateUpdated":"2026-09-21T20:45:49.510Z","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP"},"title":"CISA ADP Vulnrichment"}],"cna":{"affected":[{"product":"hatchet","vendor":"hatchet-dev","versions":[{"status":"affected","version":"< 0.91.1"}]}],"descriptions":[{"lang":"en","value":"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."}],"metrics":[{"cvssV3_1":{"attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":7.1,"baseSeverity":"HIGH","confidentialityImpact":"LOW","integrityImpact":"HIGH","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"REQUIRED","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:N","version":"3.1"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-287","description":"CWE-287: Improper Authentication","lang":"en","type":"CWE"}]},{"descriptions":[{"cweId":"CWE-352","description":"CWE-352: Cross-Site Request Forgery (CSRF)","lang":"en","type":"CWE"}]},{"descriptions":[{"cweId":"CWE-384","description":"CWE-384: Session Fixation","lang":"en","type":"CWE"}]},{"descriptions":[{"cweId":"CWE-1275","description":"CWE-1275: Sensitive Cookie with Improper SameSite Attribute","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2026-09-21T15:45:27.610Z","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","shortName":"GitHub_M"},"references":[{"name":"https://github.com/hatchet-dev/hatchet/security/advisories/GHSA-phg3-3g28-wq9v","tags":["x_refsource_CONFIRM"],"url":"https://github.com/hatchet-dev/hatchet/security/advisories/GHSA-phg3-3g28-wq9v"},{"name":"https://github.com/hatchet-dev/hatchet/commit/f90464189ad642251e09412d0f99fde353036428","tags":["x_refsource_MISC"],"url":"https://github.com/hatchet-dev/hatchet/commit/f90464189ad642251e09412d0f99fde353036428"}],"source":{"advisory":"GHSA-phg3-3g28-wq9v","discovery":"UNKNOWN"},"title":"hatchet - Unauthenticated OAuth state CSRF / login-CSRF via empty-state collision in ValidateOAuthState"}},"cveMetadata":{"assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","assignerShortName":"GitHub_M","cveId":"CVE-2026-61687","datePublished":"2026-09-21T15:45:27.610Z","dateReserved":"2026-07-10T18:36:58.849Z","dateUpdated":"2026-09-21T20:45:49.510Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-09-21 16:17:09","lastModifiedDate":"2026-09-24 21:25:27","problem_types":["CWE-287","CWE-352","CWE-384","CWE-1275","CWE-287 CWE-287: Improper Authentication","CWE-352 CWE-352: Cross-Site Request Forgery (CSRF)","CWE-384 CWE-384: Session Fixation","CWE-1275 CWE-1275: Sensitive Cookie with Improper SameSite Attribute"],"metrics":{"cvssMetricV31":[{"source":"security-advisories@github.com","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:N","baseScore":7.1,"baseSeverity":"HIGH","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"REQUIRED","scope":"UNCHANGED","confidentialityImpact":"LOW","integrityImpact":"HIGH","availabilityImpact":"NONE"},"exploitabilityScore":2.8,"impactScore":4.2}],"ssvcV203":[{"source":"134c704f-9b21-4f2e-91b3-4a467353bcc0","ssvcData":{"timestamp":"2026-09-21T19:40:30.611465Z","id":"CVE-2026-61687","options":[{"exploitation":"none"},{"automatable":"no"},{"technicalImpact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"61687","Ordinal":"1","Title":"hatchet - Unauthenticated OAuth state CSRF / login-CSRF via empt","CVE":"CVE-2026-61687","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"61687","Ordinal":"1","NoteData":"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.","Type":"Description","Title":"hatchet - Unauthenticated OAuth state CSRF / login-CSRF via empt"}]}}}