CVE-2026-79921 Overview
CVE-2026-79921 affects amqp091-go, a Go client library for the Advanced Message Queuing Protocol (AMQP) version 0.9.1 maintained by the RabbitMQ project. Versions prior to 1.13.0 fail to enforce the negotiated frame_max limit on inbound content body frames. A compromised or malicious AMQP broker can force the client to allocate memory and process frames exceeding this limit. The result is unexpected memory consumption or application-layer denial of service (DoS). The flaw is categorized under [CWE-770: Allocation of Resources Without Limits or Throttling].
Critical Impact
A malicious AMQP broker can bypass protocol framing constraints to exhaust client memory and cause application-layer denial of service.
Affected Products
- github.com/rabbitmq/amqp091-go versions prior to 1.13.0
- Go applications embedding the vulnerable AMQP 0.9.1 client library
- Systems connecting to untrusted or potentially compromised RabbitMQ brokers
Discovery Timeline
- 2026-08-26 - CVE-2026-79921 published to NVD
- 2026-08-26 - Last updated in NVD database
Technical Details for CVE-2026-79921
Vulnerability Analysis
The AMQP 0.9.1 protocol includes a handshake step in which client and server negotiate a frame_max value. This value defines the maximum size of any single frame exchanged over the connection. The amqp091-go client trusted server-supplied frame sizing without enforcing the specification-defined minimum floor of 4096 bytes (frameMinSize). It also failed to validate that inbound content body frames respected the negotiated ceiling.
A malicious broker can therefore stream oversized content body frames, or advertise extreme fragmentation, causing the client to allocate large buffers or perform excessive CPU work per frame. Because the client operates at the message-consumption layer, this behavior can propagate directly into denial of service at the application layer.
Root Cause
The root cause is missing validation of frame size boundaries during connection tuning and body-frame reception. The client accepted whatever FrameMax the server proposed and used it as Config.FrameSize without applying a lower bound. It also did not reject content body frames exceeding the negotiated limit, violating AMQP framing constraints.
Attack Vector
The attack requires the client to connect to an attacker-controlled or compromised broker. Once connected, the broker manipulates the tune negotiation or sends content body frames larger than frame_max. The client processes them, allocating resources proportional to attacker input. No authentication of the client to the broker is required for the malicious broker to trigger the condition.
c.m.Unlock()
- // Frame size includes headers and end byte (len(payload)+8), even if
- // this is less than FrameMinSize, use what the server sends because the
- // alternative is to stop the handshake here.
- c.Config.FrameSize = pick(config.FrameSize, int(tune.FrameMax))
+ // Frame size includes headers and end byte (len(payload)+8). Enforce the spec
+ // minimum floor of frameMinSize (4096 bytes) to prevent malicious servers
+ // from forcing extreme fragmentation and CPU overhead.
+ c.Config.FrameSize = negotiateFrameSize(config.FrameSize, int(tune.FrameMax))
// Save this off for resetDeadline()
c.Config.Heartbeat = time.Second * time.Duration(pick(
Source: GitHub Commit 6beb7b5. The patch replaces the unbounded pick selection with a negotiateFrameSize helper that enforces the 4096-byte minimum floor from the AMQP specification.
Detection Methods for CVE-2026-79921
Indicators of Compromise
- Go application processes exhibiting sudden heap growth or out-of-memory termination while connected to an AMQP broker.
- Anomalous inbound frame sizes on AMQP TCP sessions (default port 5672 or TLS on 5671) exceeding negotiated frame_max values.
- Connections to previously unseen or untrusted AMQP broker endpoints from application workloads.
Detection Strategies
- Perform software composition analysis (SCA) on Go modules to identify github.com/rabbitmq/amqp091-go versions below 1.13.0 in build manifests and go.sum files.
- Monitor runtime memory metrics of AMQP consumer processes and alert on rapid resident set size (RSS) growth correlated with broker traffic.
- Inspect network telemetry for AMQP frame headers indicating body sizes larger than the tune-ok negotiated ceiling.
Monitoring Recommendations
- Enable structured logging around AMQP connection tune and consume operations to capture negotiated frame_max and observed frame sizes.
- Track process crash and restart events on services that consume from RabbitMQ or other AMQP 0.9.1 brokers.
- Baseline broker-to-client throughput per queue and alert on deviations that coincide with client resource exhaustion.
How to Mitigate CVE-2026-79921
Immediate Actions Required
- Upgrade github.com/rabbitmq/amqp091-go to version 1.13.0 or later in all Go services and rebuild affected binaries.
- Audit dependency graphs for transitive inclusion of the vulnerable library and update indirect consumers.
- Restrict outbound network egress from AMQP client workloads to known, trusted broker endpoints only.
Patch Information
The fix is available in amqp091-go v1.13.0. The change was introduced in pull request #353 and enforces the AMQP specification minimum frame size (frameMinSize = 4096 bytes) during connection tuning. Further details are in the GitHub Security Advisory GHSA-6c5v-hqjr-5xxp.
Workarounds
- No known workarounds exist per the vendor advisory; upgrading to 1.13.0 is required.
- As a defense-in-depth measure, ensure clients connect only to authenticated, TLS-protected brokers you control.
- Enforce network-level allow lists so AMQP clients cannot be redirected to attacker-controlled brokers.
# Update the module to the patched version
go get github.com/rabbitmq/amqp091-go@v1.13.0
go mod tidy
# Verify the resolved version
go list -m github.com/rabbitmq/amqp091-go
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

