Skip to main content
Vulnerability Database/CVE-2026-77410

CVE-2026-77410: RabbitMQ amqp091-go DOS Vulnerability

CVE-2026-77410 is a denial of service flaw in RabbitMQ amqp091-go that allows malicious brokers to exhaust client memory through extreme allocation requests. This post explains its impact, affected versions, and mitigation steps.

Published:

CVE-2026-77410 Overview

CVE-2026-77410 is a memory exhaustion vulnerability in the RabbitMQ amqp091-go client library, a Go implementation of the AMQP 0.9.1 protocol. The flaw resides in Channel.recvContent within channel.go, which preallocates the message body slice using the uint64 ch.header.Size value supplied by an AMQP content header. Because the allocation is not capped to the negotiated Connection.Config.FrameSize, a malicious or compromised broker can advertise an extreme body size and force the Go runtime to attempt a correspondingly large allocation. The result is memory exhaustion and termination of the client process. The issue is fixed in version 1.13.0.

Critical Impact

A malicious AMQP broker can crash any Go client using amqp091-go prior to 1.13.0 by sending a single crafted content header, enabling denial of service against dependent services and pipelines.

Affected Products

  • RabbitMQ amqp091-go Go client library, versions prior to 1.13.0
  • Go applications that consume messages from AMQP 0.9.1 brokers using amqp091-go
  • Downstream services embedding github.com/rabbitmq/amqp091-go as a dependency

Discovery Timeline

  • 2026-09-16 - CVE-2026-77410 published to NVD
  • 2026-09-16 - Last updated in NVD database

Technical Details for CVE-2026-77410

Vulnerability Analysis

The vulnerability is a memory allocation flaw classified under [CWE-789] Memory Allocation with Excessive Size Value. The AMQP 0.9.1 protocol splits message delivery into a method frame, a content header frame containing total body size, and one or more body frames. The amqp091-go client reads the declared size from the header and immediately reserves a slice large enough to hold the entire body. An attacker-controlled broker can set this size to values near the uint64 maximum, causing the Go runtime to request tens of exabytes of memory. The runtime aborts the process when the request cannot be satisfied.

Root Cause

The recvContent function trusted a broker-supplied uint64 length without validating it against the connection's negotiated FrameSize. AMQP peers negotiate a maximum frame size during connection tuning, and legitimate body allocations should never exceed that ceiling per frame. The absence of a bound check allowed unchecked propagation of untrusted input into make([]byte, 0, ch.header.Size).

Attack Vector

Exploitation requires a client to connect to an attacker-controlled or compromised AMQP broker. Once the connection is established, the broker sends a content header frame declaring an oversized body length. The client crashes before any body data is transmitted. Because the crash occurs on the consumer side, the attack disrupts availability of Go services that depend on the broker for messaging.

go
// Security patch in channel.go - Cap body pre-allocation to FrameMax
case *bodyFrame:
    if cap(ch.body) == 0 {
-        ch.body = make([]byte, 0, ch.header.Size)
+        headerSize := ch.header.Size
+        if fs := uint64(ch.connection.Config.FrameSize); fs > 0 && headerSize > fs {
+            headerSize = fs
+        }
+        ch.body = make([]byte, 0, headerSize)
    }
    ch.body = append(ch.body, frame.Body...)

Source: GitHub Commit 91b65fa

Detection Methods for CVE-2026-77410

Indicators of Compromise

  • Unexpected termination of Go processes that consume from AMQP brokers, with runtime: out of memory or fatal error: runtime: cannot allocate memory messages in stderr.
  • Sudden spikes in resident memory usage on hosts running amqp091-go clients immediately followed by process exit.
  • AMQP connections to untrusted or newly introduced broker endpoints not present in the approved service inventory.

Detection Strategies

  • Inventory Go binaries and container images using software composition analysis to locate github.com/rabbitmq/amqp091-go dependencies at versions below 1.13.0.
  • Monitor process crash telemetry and correlate OOM kills on service hosts with active AMQP sessions.
  • Inspect broker traffic for content header frames declaring body sizes larger than the negotiated frame_max value.

Monitoring Recommendations

  • Alert on repeated restarts of AMQP consumer services within short intervals, which indicate a crash-loop induced by malicious content headers.
  • Track outbound TCP connections from consumer workloads to AMQP ports (5672, 5671) and flag connections to unapproved brokers.
  • Enable structured logging in AMQP clients to capture header size and channel state prior to crash for post-incident analysis.

How to Mitigate CVE-2026-77410

Immediate Actions Required

  • Upgrade github.com/rabbitmq/amqp091-go to version 1.13.0 or later in all Go modules and rebuild affected binaries.
  • Audit every AMQP client connection string and ensure brokers are authenticated, TLS-terminated, and hosted on trusted infrastructure.
  • Restrict network egress from consumer workloads so they can only reach approved broker endpoints.

Patch Information

The fix is included in amqp091-go v1.13.0. The patch caps headerSize to ch.connection.Config.FrameSize before allocating the body slice, preventing broker-supplied values from driving allocation size. Details are published in GitHub Security Advisory GHSA-r9c8-gcjp-xfwh, the v1.13.0 release notes, and the pull request discussion.

Workarounds

  • Connect only to trusted AMQP brokers under direct organizational control until the client library is upgraded.
  • Enforce mutual TLS between clients and brokers to prevent connection hijacking or broker impersonation.
  • Set container-level memory limits and automatic restart policies so crashes fail fast without cascading impact.
bash
# Update dependency to the fixed release
go get github.com/rabbitmq/amqp091-go@v1.13.0
go mod tidy
go build ./...

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.