---
id: "CVE-2026-61681"
kind: "vulnerability"
aliases: ["CVE-2026-61681", "GHSA-fjwv-jf2v-j499", "GO-2026-6565"]
title: "SSRF via Unsigned UnsubscribeURL in SNS UnsubscribeConfirmation Handler in github.com/hatchet-dev/hatchet"
severity: "medium"
cvss: 4.1
epss: 0.00311
exploited: false
status: "open"
category: "package"
products: [{"name": "github.com/hatchet-dev/hatchet", "fixed": ["0.91.2"], "affected": "< 0.91.2", "ecosystem": "go"}]
ecosystems: ["go"]
tags: ["aws-sns", "go", "hatchet", "package", "self-hosted"]
not_affected_if: ["no-sns-integration"]
published_at: "2026-09-21T16:17:09+00:00"
first_seen_at: "2026-10-23T19:13:08+00:00"
updated_at: "2026-10-23T21:49:18+00:00"
sources: [{"source": "govuln", "url": "https://pkg.go.dev/vuln/GO-2026-6565", "first_seen_at": "2026-10-23T19:13:08+00:00"}, {"source": "epss", "url": "https://api.first.org/data/v1/epss?cve=CVE-2026-61681", "first_seen_at": "2026-10-23T19:13:43+00:00"}, {"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-61681", "first_seen_at": "2026-10-23T19:35:23+00:00"}]
---

# SSRF via Unsigned UnsubscribeURL in SNS UnsubscribeConfirmation Handler in github.com/hatchet-dev/hatchet

The SNS UnsubscribeConfirmation handler in Hatchet makes a server-side HTTP GET to the UnsubscribeURL field, which is not covered by the AWS signature check. An authenticated tenant can point that field at an internal URL, so the Hatchet server fetches it.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- go:github.com/hatchet-dev/hatchet affected < 0.91.2 fixed 0.91.2

## How to check

go list -m github.com/hatchet-dev/hatchet (version below 0.91.2 is affected per products field)
Check whether the SNS ingestor in internal/integrations/ingestors/sns is in use

## Fix

Upgrade github.com/hatchet-dev/hatchet to 0.91.2 (sources conflict: description says fixed in 0.91.1)

## Timeline

- 2026-10-23T19:13:08+00:00 govuln https://pkg.go.dev/vuln/GO-2026-6565
- 2026-10-23T19:13:43+00:00 epss https://api.first.org/data/v1/epss?cve=CVE-2026-61681
- 2026-10-23T19:35:23+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-61681

## From the sources

Hatchet is a platform for orchestrating background tasks, AI agents, and durable workflows at scale. Prior to 0.91.1, the SNS UnsubscribeConfirmation handler in internal/integrations/ingestors/sns/sns.go calls http.Get() on payload.UnsubscribeURL after VerifyPayload() even though BuildSignature() excludes UnsubscribeURL, allowing an authenticated Hatchet tenant to replace that field in an otherwise valid AWS-signed message with an internal URL. The server-side request can reach EC2 Instance Metadata Service, internal services, and internal HTTP APIs, potentially exposing IAM credentials or network-accessible data and functionality. This issue is fixed in version 0.91.1.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
