CVE-2026-77406: RabbitMQ amqp091-go: Consumer Message Flooding via Signed-to-Unsigned Integer Casting in Qos Configuration

Published Sep 16, 2026
·
Updated

Summary A logic and resource exhaustion vulnerability exists in the AMQP client's Quality of Service (Qos) configuration method. The Qos function accepts signed integers (int) for the prefetchCount and prefetchSize parameters but casts them directly to unsigned integers (uint16 and uint32, respectively) when formatting the wire-level frame.

If a developer passes a negative integer (such as -1) to these parameters—frequently intended as a sentinel value meaning "no change" or "no limit"—the application performs an implicit signed-to-unsigned conversion. This wraps the values to their absolute maximum limit ($65535$ and $4294967295$). Consequently, a consumer expecting restricted message delivery rates is suddenly flooded with an unlimited volume of messages, potentially exhausting memory resources and crashing the application.

---

Vulnerability Details

Mechanism The bug manifests during the structural assignment inside the channel's Qos method:

go // channel.go:795-796 PrefetchCount: uint16(prefetchCount), // -1 wraps to 65535 PrefetchSize: uint32(prefetchSize), // -1 wraps to 4294967295

In Go, converting a negative signed integer to an unsigned integer shifts the value via two's complement arithmetic. Because no boundary validation or signedness check occurs prior to the cast: Passing -1 for prefetchCount yields a wire value of 65535. Passing -1 for prefetchSize yields a wire value of 4294967295.

Impact The AMQP broker interprets a prefetch-count of 65535 as an instruction to dispatch messages to the consumer with virtually no concurrency limits.

If the application is processing heavy payloads or relies on strict rate-limiting to maintain stability, this unexpected flood will cause rapid heap memory growth, unmanageable processing queues, and an eventual Out-Of-Memory (OOM) termination.

---

Attack Vector An attacker who can manipulate configuration files, environmental variables, or API inputs that dictate client Qos settings can trigger an application-layer Denial of Service:

1. Malicious Input: An attacker sets a service's prefetch configuration parameter to -1. 2. Implicit Overflow: The application initializes the channel, executes Qos(-1, ...), and transmits an unintended maximum-capacity request to the RabbitMQ/AMQP broker. 3. Consumer Exhaustion: The broker flushes the entire contents of the queue directly into the client consumer's network buffer, bypassing expected application concurrency barriers and inducing a crash.

Other sources

RabbitMQ amqp091-go is a Go AMQP 0.9.1 client. Prior to 1.13.0, Channel.Qos in channel.go accepts negative prefetchCount and prefetchSize integers and casts them directly to uint16 and uint32 fields in the basic.qos method because validateQos is absent. Values such as -1 therefore wrap to 65535 or 4294967295 instead of being rejected. An application that permits untrusted configuration of these Qos values can unintentionally request extremely large prefetch limits, allowing a broker to deliver enough queued messages to exhaust client memory and disrupt processing. This issue is fixed in version 1.13.0.

— MITRE

RabbitMQ amqp091-go: Consumer Message Flooding via Signed-to-Unsigned Integer Casting in Qos Configuration

— Microsoft

Affected Software

7 affected componentsFixes available
amqp091-go<1.13.0
go/github.com/rabbitmq/amqp091-go<1.13.0
1.13.0
Microsoft azl3 keda 2.14.1-19<2.14.1-21
2.14.1-21
Microsoft azl3 telegraf 1.31.0-33<1.31.0-34
1.31.0-34
ubuntu/golang-github-rabbitmq-amqp091-go*
ubuntu/golang-github-rabbitmq-amqp091-go*
ubuntu/golang-github-rabbitmq-amqp091-go*

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade go/github.com/rabbitmq/amqp091-go to a version that resolves this vulnerability.

    Fixed in 1.13.0
  2. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 2.14.1-21
  3. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in 1.31.0-34
  4. Upgrade

    Upgrade RabbitMQ amqp091-go to a version that resolves this vulnerability.

    Fixed in 1.13.0
  5. Configuration

    Ensure application logic validates/guards prefetchCount so negative integers (e.g., -1) are not passed to Channel.Qos, because they are implicitly cast to uint16 and wrap to 65535.

    AMQP client Quality of Service (Channel.Qos in channel.go) prefetchCount = Use only non-negative values; do not pass -1
  6. Configuration

    Ensure application logic validates/guards prefetchSize so negative integers (e.g., -1) are not passed to Channel.Qos, because they are implicitly cast to uint32 and wrap to 4294967295.

    AMQP client Quality of Service (Channel.Qos in channel.go) prefetchSize = Use only non-negative values; do not pass -1

Event History

Sep 16, 2026
CVE Published
via MITRE·02:37 PM
Data Sourced
via MITRE·02:37 PM
DescriptionWeakness
Data Sourced
via OSV·03:17 PM
DescriptionSeverityAffected Software
Data Sourced
via NVD·03:17 PM
DescriptionSeverityWeakness
Sep 17, 2026
Advisory Published
via GitHub·05:04 PM
Data Sourced
via GitHub·05:04 PM
DescriptionWeaknessAffected Software
Sep 19, 2026
Data Sourced
via Microsoft·08:10 AM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

Which applications are exposed to this issue?

Applications using amqp091-go before version 1.13.0 are exposed if untrusted input can control the prefetchCount or prefetchSize arguments passed to Channel.Qos. The resulting oversized prefetch request can cause the broker to deliver enough queued messages to exhaust the client's memory.

2

What input is needed to trigger the oversized prefetch request?

A negative Qos prefetchCount or prefetchSize value is required. For example, -1 is cast to 65535 for the uint16 prefetch-count field or 4294967295 for the uint32 prefetch-size field instead of being rejected.

3

What can be done before upgrading?

Do not allow untrusted configuration or user input to set Channel.Qos prefetchCount or prefetchSize. Validate these values before calling Channel.Qos and reject negative values.

4

How can I determine whether an application may be affected?

Review calls to Channel.Qos in applications using amqp091-go versions earlier than 1.13.0. Investigate whether either Qos value can originate from external configuration, user-controlled input, or any source that could supply a negative integer.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203