amqp091-go (RabbitMQ Go Client), Memory Exhaustion/DoS, CVE-2026-79921 (High) -DC-Sep2026-2167

Listen to this Post

A vulnerability exists in the amqp091-go client library where a compromised or malicious AMQP broker can force the client to allocate resources for and process content body frames that exceed the negotiated `frame_max` limit. This can lead to unexpected memory consumption or application-layer denial of service (DoS), bypassing the protocol’s built-in framing constraints.
During a standard AMQP 0-9-1 connection handshake, the client and the broker negotiate a maximum frame size (frame_max), for example, 4096 bytes. However, after negotiation, a malicious broker can send a valid `basic.deliver` sequence containing a content body frame whose header declares a payload size larger than the negotiated frame_max. Instead of enforcing the agreed-upon limit and closing the connection with a frame-error (as mandated by the AMQP 0-9-1 specification), the amqp091-go client:
– Accepts the broker-declared oversized frame size.
– Allocates memory based on this oversized declaration.
– Reads the payload, assembles it into the message, and delivers it to the consumer.
The technical flaw lies in the parsing logic of content body frames within the library’s implementation. When a malicious or compromised AMQP broker sends content body frames that exceed the negotiated `frame_max` limit, the vulnerable version of amqp091-go does not reject these oversized frames as required by the protocol specification. Instead, it proceeds to allocate memory and process the entire payload regardless of its size relative to the agreed-upon constraint. This behavior effectively bypasses the built-in framing constraints designed to protect against resource exhaustion attacks, allowing an attacker to dictate the amount of system resources consumed by the client application. By forcing the client to allocate large blocks of heap memory for processing oversized frames, an attacker can rapidly deplete available RAM on the host machine. This resource exhaustion can lead to the termination of the Go application by the operating system’s out-of-memory killer or cause severe performance degradation due to excessive garbage collection pauses and swapping. Consequently, this flaw enables a remote denial of service attack against applications relying on amqp091-go for message queue connectivity, undermining the availability aspect of the CIA triad without requiring authentication if the broker is accessible. This vulnerability aligns with CWE-770: Allocation of Resources Without Limits or Throttling. The lack of input validation against negotiated protocol limits represents a fundamental failure in enforcing security boundaries defined during session initialization.

DailyCVE Form:

Platform: amqp091-go
Version: < 1.13.0
Vulnerability: Memory Exhaustion
Severity: High (CVSS 8.9)
date: 2026-08-26

Prediction: 2026-09-15

What Undercode Say:

Analytics:

  • CWE ID: CWE-770 (Allocation of Resources Without Limits or Throttling)
  • CVSS Score: 8.9 (High)
  • Attack Vector: Network
  • Attack Complexity: Low
  • Privileges Required: None
  • User Interaction: None
  • EPSS: 0.32% (very low exploit probability in next 30 days)
  • Exploit Availability: Not available
  • Affected Component: github.com/rabbitmq/amqp091-go

Bash Commands & Code (Educational Purposes!):

Check your current amqp091-go version:

go list -m github.com/rabbitmq/amqp091-go

Update to the patched version:

go get github.com/rabbitmq/[email protected]

Verify the update:

go mod tidy
go list -m github.com/rabbitmq/amqp091-go

Exploit: (Educational Purposes!)

A malicious AMQP broker can craft a `basic.deliver` frame with a content body header declaring a payload size larger than the negotiated frame_max. For example, if `frame_max` is negotiated as 4096 bytes, the broker can send a frame header with a payload length of 4,294,967,295 bytes (max uint32). The vulnerable client will allocate memory for this oversized payload, leading to memory exhaustion.

Protection:

  • Upgrade the amqp091-go dependency to version 1.13.0 or later.
  • Restrict client connections to trusted brokers.
  • Enforce a strict `frame_max` limit on the broker side to prevent oversized frames.
  • Apply system or container-level resource limits (e.g., memory limits) to bound memory usage.
  • Configure the client process to restart or alert when memory consumption exceeds a safe threshold.

Impact:

  • Denial of Service (DoS): A malicious broker can send extremely large frame sizes, triggering significant memory allocations on the client side, potentially leading to Out-Of-Memory (OOM) crashes.
  • Protocol Violation: The client fails to enforce negotiated connection parameters, trusting the broker implicitly even after constraints have been established.
  • Resource Exhaustion: An attacker can rapidly deplete available RAM on the host machine, causing severe performance degradation or application termination.

🎯Let’s Practice Exploiting & Learn Patching For Free:

🎓 Live Courses & Certifications:

Join Undercode Academy for Verified Certifications

🚀 Request a Custom Project:

Secure, high-velocity infrastructure and disruptive technological engineering. Contact our engineering team for high-tier development and proprietary systems:
[email protected]
💎 Smart Architecture | 🛡️ Secure by Design | ⭐ Trusted by Thousands

Sources:

Reported By: github.com
Extra Source Hub:
Undercode

🔐JOIN OUR CYBER WORLD [ CVE News • HackMonitor • UndercodeNews ]

💬 Whatsapp | 💬 Telegram

📢 Follow DailyCVE & Stay Tuned:

𝕏 formerly Twitter 🐦 | @ Threads | 🔗 Linkedin Featured Image

Scroll to Top