{"schemaVersion":3,"id":"CVE-2026-61687","aliases":["GHSA-phg3-3g28-wq9v","GO-2026-6535"],"status":"published","duplicateOf":null,"title":null,"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.","dates":{"published":"2026-09-21T15:45:27.610Z","modified":"2026-09-21T20:45:49.510Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":7.1,"severity":"high","version":"3.1","versionLabel":"v3.1","source":"CVE.org","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:N","computed":false,"selection":"backend-summary"},"metrics":[{"version":"3.1","versionLabel":"v3.1","source":"CVE.org","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","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Go","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","exploitability":7.2,"impact":7,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"NVD","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","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.00171,"percentile":0.06175,"severity":"low","asOf":"2026-10-21T00:00:00.000Z","change":{"pp":null,"baselineDate":null,"baselineScore":null},"history":[{"date":"2026-09-22T00:00:00.000Z","score":0.00118,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00118,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.00171,"percentile":0.06175}],"last30":[{"date":"2026-09-22T00:00:00.000Z","score":0.00118,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00118,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00171,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.00171,"percentile":0.06175}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[],"exploitCount":0,"weaknesses":[{"id":"CWE-287","name":"Improper Authentication","description":"When an actor claims to have a given identity, the product does not prove or insufficiently proves that the claim is correct.","type":"weakness","status":"Draft","abstraction":"Class","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/287.html"},{"id":"CWE-352","name":"Cross-Site Request Forgery (CSRF)","description":"The web application does not, or cannot, sufficiently verify whether a request was intentionally provided by the user who sent the request, which could have originated from an unauthorized actor.","type":"weakness","status":"Stable","abstraction":"Compound","likelihoodOfExploit":"Medium","url":"https://cwe.mitre.org/data/definitions/352.html"},{"id":"CWE-384","name":"Session Fixation","description":"Authenticating a user, or otherwise establishing a new user session, without invalidating any existing session identifier gives an attacker the opportunity to steal authenticated sessions.","type":"weakness","status":"Incomplete","abstraction":"Compound","likelihoodOfExploit":null,"url":"https://cwe.mitre.org/data/definitions/384.html"},{"id":"CWE-1275","name":"Sensitive Cookie with Improper SameSite Attribute","description":"The SameSite attribute for sensitive cookies is not set, or an insecure value is used.","type":"weakness","status":"Incomplete","abstraction":"Variant","likelihoodOfExploit":"Medium","url":"https://cwe.mitre.org/data/definitions/1275.html"}],"affected":[{"vendor":"github.com/hatchet-dev","product":"hatchet","name":"github.com/hatchet-dev/hatchet","label":"hatchet","ecosystem":"Go","cpePart":null,"purl":"pkg:golang/github.com/hatchet-dev/hatchet","purlType":"golang","versions":[{"text":"< 0.91.2","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 0.91.2","eol":null,"hubHref":null},{"vendor":"Go","product":"hatchet","name":"hatchet","label":"hatchet","ecosystem":"Go","cpePart":null,"purl":"pkg:golang/hatchet","purlType":"golang","versions":[{"text":"< 0.91.1","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 0.91.1","eol":null,"hubHref":null},{"vendor":"hatchet-dev","product":"hatchet","name":"hatchet","label":"hatchet","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 0.91.1","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 0.91.1","eol":null,"hubHref":"/vendor/hatchet-dev/hatchet"}],"affectedCount":3,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/hatchet-dev/hatchet/security/advisories/GHSA-phg3-3g28-wq9v","label":"github.com/hatchet-dev/hatchet/security/advisories/GHSA-phg3-3g28-wq9v","hostname":"github.com","tags":["X Refsource CONFIRM","WEB","Advisory"]},{"url":"https://github.com/hatchet-dev/hatchet/commit/f90464189ad642251e09412d0f99fde353036428","label":"github.com/hatchet-dev/hatchet/commit/f90464189ad642251e09412d0f99fde353036428","hostname":"github.com","tags":["X Refsource MISC","WEB","FIX"]},{"url":"https://github.com/hatchet-dev/hatchet","label":"github.com/hatchet-dev/hatchet","hostname":"github.com","tags":["PACKAGE"]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":[]},"timeline":[{"kind":"published","date":"2026-09-21T15:45:27.610Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-09-21T20:45:49.510Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":28,"level":"medium","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-22T04:11:58.132Z","stale":false,"partial":false}}