ZeroHour

CVE-2026-77409

large

Connection-stall deadlock in RabbitMQ amqp091-go Go AMQP client

CVSS 4.0
8.2 high
EPSS
Published
()
Modified
AI analysis

RabbitMQ's amqp091-go, the widely used Go client for the AMQP 0-9-1 protocol, prior to version 1.13.0 synchronously forwards broker events — publisher confirmations, flow-control notices, consumer cancellations, and returned messages, including NotifyConfirm events and connection-block notifications — to application-supplied Go channels in Channel.dispatch, confirms.confirm, and Connection.dispatch0. If such a channel is unbuffered, full, or not drained promptly, the client's sole reader goroutine blocks on the send and stops processing incoming frames, acknowledgments, deliveries, and heartbeats. An attacker or compromised/misbehaving broker that can trigger bursts of these events can therefore stall connections, cause missed heartbeats, deadlocks, and disconnections — an availability-focused denial of service that can silently halt message processing (CVSS 4.0 rates availability impact as High). Any Go application embedding amqp091-go before 1.13.0 that passes unbuffered or under-drained notification channels to the library's Notify* APIs is affected. No public proof-of-concept or confirmed in-the-wild exploitation is known, and the issue is not listed in CISA KEV.

What to do: Upgrade github.com/rabbitmq/amqp091-go to version 1.13.0 or later and scan go.mod / dependency graphs for older versions. If upgrading is not immediately possible, audit all Notify* registrations (e.g., NotifyConfirm, NotifyReturn, NotifyFlow, NotifyCancel, connection block notifications) and ensure the supplied channels are adequately buffered and drained by dedicated goroutines that never block on send.

Affected
RabbitMQ amqp091-go (Go AMQP 0-9-1 client library)all versions prior to 1.13.0
Estimated exposure
large≈ tens of thousands of Go services and applications (estimated; the de facto standard Go client for RabbitMQ) — amqp091-go is the canonical Go AMQP 0-9-1 client embedded across the very large RabbitMQ deployment base (enterprise and cloud message brokers), implying tens of thousands of downstream Go deployments, though only applications using…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

RabbitMQ amqp091-go is a Go AMQP 0.9.1 client. Prior to 1.13.0, Channel.dispatch in channel.go, confirms.confirm in confirms.go, and Connection.dispatch0 in connection.go synchronously send publisher confirmations, flow-control events, consumer cancellations, returned messages, including NotifyConfirm events and connection block notifications, to application-provided channels. If a listener channel is unbuffered, full, or not drained promptly, the sole reader goroutine blocks and stops processing frames, acknowledgments, deliveries, and heartbeats. Broker-driven event bursts can therefore cause connection stalls, missed heartbeats, deadlocks, and disconnection. This issue is fixed in version 1.13.0.

Weakness
CWE-770
Vector
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:L/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X

In the news

No ingested article mentions this CVE yet.