fix(deps): update module github.com/rabbitmq/amqp091-go to v1.13.0 [security] - #2308
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/go-github.com-rabbitmq-amqp091-go-vulnerability
branch
from
September 7, 2026 18:58
7034f18 to
6c70fa2
Compare
renovate
Bot
force-pushed
the
renovate/go-github.com-rabbitmq-amqp091-go-vulnerability
branch
2 times, most recently
from
September 16, 2026 09:16
ce36aa8 to
1e34903
Compare
renovate
Bot
force-pushed
the
renovate/go-github.com-rabbitmq-amqp091-go-vulnerability
branch
from
September 23, 2026 16:07
1e34903 to
39e5615
Compare
renovate
Bot
force-pushed
the
renovate/go-github.com-rabbitmq-amqp091-go-vulnerability
branch
from
September 24, 2026 09:59
39e5615 to
4aef321
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
v1.10.0→v1.13.0Warning
Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
amqp091-go has a Potential Memory Exhaustion/Protocol Violation via Broker-Controlled Oversized Payload
CVE-2026-79921 / GHSA-6c5v-hqjr-5xxp
More information
Details
Summary
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.
Details
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:
Impact
Severity
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:HReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
RabbitMQ amqp091-go: Connection Configuration Overwrite via Unsanitized TLS Path Parameter Injection
CVE-2026-77404 / GHSA-465g-fh3v-9jw4
More information
Details
Summary
A query parameter injection vulnerability exists in the AMQP client's connection URI formatting logic. When generating or parsing connection URIs, TLS-related filesystem paths (such as certificates or keys) are appended directly to the URI's query string using string concatenation rather than secure URL encoding via functions like
url.QueryEscape.If an application handles a TLS file path containing special character delimiters (such as
&or=), these characters are interpreted as parameter separators by the URI parser. If the resultingURI.String()output is subsequently re-parsed viaParseURI, the injected fields can silently overwrite or hijack critical configuration parameters, forcing the client to use arbitrary connection settings or alternate TLS files.Vulnerability Details
Mechanism
The vulnerability lies within the lack of proper escaping when compiling connection string components into a raw URL format:
Because
certPathandkeyPathare not passed throughurl.QueryEscape, special URL characters preserve their control meanings. For instance, if a user supply a certificate path named:/tmp/cert=foo&keyfile=/evil/pathThe generated string translates into:
...?certfile=/tmp/cert=foo&keyfile=/evil/path&keyfile=/original/pathWhen this string passes back through
ParseURI(common in connection re-dial routines or configuration replication steps), standard URL parsing mechanics treat the string as multiple distinct parameters. Depending on map assignment order inside the parser, the injected keys take precedence over the original parameters.Impact
By manipulating the file paths used for TLS assets, an attacker or compromised local sub-system can:
Attack Vector
An attacker who has partial control over directory naming conventions or environmental variables used to specify local infrastructure paths can execute a parameter injection attack:
/var/lib/certs/client.crt?cacertfile=/tmp/fake_ca.crt&).cacertfileparameter, loading a different, unverified Certificate Authority string.Severity
CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:LReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
RabbitMQ amqp091-go: Consumer Message Flooding via Signed-to-Unsigned Integer Casting in Qos Configuration
CVE-2026-77406 / GHSA-rm6m-hrcw-jw33
More information
Details
Summary
A logic and resource exhaustion vulnerability exists in the AMQP client's Quality of Service (
Qos) configuration method. TheQosfunction accepts signed integers (int) for theprefetchCountandprefetchSizeparameters but casts them directly to unsigned integers (uint16anduint32, respectively) when formatting the wire-level frame.If a developer passes a negative integer (such as$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.
-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 (Vulnerability Details
Mechanism
The bug manifests during the structural assignment inside the channel's
Qosmethod: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:
-1forprefetchCountyields a wire value of65535.-1forprefetchSizeyields a wire value of4294967295.Impact
The AMQP broker interprets a
prefetch-countof65535as 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.Qos(-1, ...), and transmits an unintended maximum-capacity request to the RabbitMQ/AMQP broker.Severity
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:LReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
RabbitMQ amqp091-go: Resource Exhaustion (OOM) via Unbounded Body Buffer Allocation
CVE-2026-77410 / GHSA-r9c8-gcjp-xfwh
More information
Details
Summary
A flaw in the
recvContentfunction allows a malicious AMQP server to trigger an Out-of-Memory (OOM) error, forcing the host operating system or container runtime to immediately terminate the client process.Vulnerability Details
When receiving message content payloads, the client processes the expected size from the content header framework. The
recvContentfunction attempts to optimize performance by pre-allocating memory for the message body based on thech.header.Sizefield, which is a 64-bit unsigned integer (uint64).The underlying library fails to validate or cap this requested size against any upper boundary—such as the maximum frame size negotiated during connection establishment (
FrameMax). If a server specifies an extreme body size (e.g.,2^62bytes), the Go runtime attempts to allocate an exabyte-scale slice capacity. This immediately exhausts available system memory, causing the operating system's OOM killer to terminate the application.Attack Vector / Exploitation Scenario
basic.deliverframe containing a content header with an intentionally inflatedbody-sizevariable.Impact
Severity
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:HReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
RabbitMQ amqp091-go: Denial of Service via Sub-Spec Frame Size Negotiation
CVE-2026-77403 / GHSA-xwwf-m8fg-p9q2
More information
Details
Summary
A Denial of Service (DoS) vulnerability exists in the AMQP client's connection negotiation logic. The AMQP specification explicitly mandates a strict minimum frame size of 4096 bytes to prevent pathological packet fragmentation. While the library defines a
frameMinSize = 4096constant, the connection negotiation loop fails to enforce this boundary, blindly accepting whatever maximum frame size (FrameMax) the server advertises during the handshake.If a client connects to a malicious or compromised AMQP broker that advertises an extremely low
FrameMax(such as 1 byte), the negotiation succeeds. Consequently, every subsequent message transmission is forced to splinter into thousands or millions of single-byte frames, causing massive CPU overhead, thread contention, and a near-instantaneous application freeze.Vulnerability Details
Mechanism
During the connection establishment phase, the client and server negotiate connection parameters—including maximum channel count, heartbeat intervals, and maximum frame sizes. The vulnerability is located where the client accepts the server's tuning parameters:
Because there is no conditional check asserting that
serverSettings.FrameMax >= frameMinSize, a value below the protocol specification floor is successfully registered. When the application later passes data payloads to the frame writer, the chunking algorithm splits the payload using the negotiatedFrameMaxvalue as its chunk window divisor.Impact
When
FrameMaxis set to an absurdly low threshold (e.g., 1 to 10 bytes):Attack Vector
An attacker who compromises an upstream AMQP broker, performs a Man-in-the-Middle (MitM) interception, or tricks an application into connecting to an unauthorized external rogue broker can trigger this vulnerability:
connection.tunephase, the rogue server returns aFrameMaxvalue of1.Severity
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:HReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
RabbitMQ amqp091-go: Plaintext Credential Exposure via Exported PLAIN Authentication Struct Fields
CVE-2026-77407 / GHSA-27gv-rfvv-22mv
More information
Details
Summary
An information disclosure vulnerability exists in the AMQP client implementation's authentication handling configuration. Following a successful connection handshake, the
Connection.Config.SASLfield stores theAuthenticationimplementation state used to establish the session.For standard
PLAINauthentication, this state utilizes thePlainAuthstruct, which defines bothUsernameandPasswordas publicly exported, plaintext string fields. Because this sensitive data is retained permanently in-memory within an exported field structure, any peripheral code, internal package, reflective logger, dependency, or automated debugging utility with access to the core*Connectionobject can read and expose the raw credentials.Vulnerability Details
Mechanism
The vulnerability stems from the structural design of the configuration storage used during and after the AMQP handshake:
When an application initializes a connection, the
PlainAuthobject is deeply nested inside the configuration structure (Connection.Config). Even after the handshake concludes and authentication is complete, this structure persists natively in-memory for the duration of the network connection's lifecycle.Because
Passwordis an exported string field, standard automated inspection mechanisms can read its value without restriction.Affected Code Paths & Integrations
Any sub-component or library that traverses or reads the
*Connectionobject will inadvertently read the plaintext password, including:Impact
The credential remains vulnerable to leak paths into logging pipelines, log aggregators, security information and event management (SIEM) systems, or standard output. Once transmitted to external log infrastructure, these credentials become accessible to unprivileged operators or any actor with access to log archives.
Attack Vector
An attacker does not necessarily need direct remote code execution to exploit this flaw; instead, the vulnerability acts as a credential harvesting vector inside multi-tenant environments or via secondary log exposure:
*Connectionobject.reflectpackage to walk the structural hierarchy, pulling the string value fromConnection.Config.SASL.(*PlainAuth).Password.Severity
CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:N/VA:N/SC:H/SI:L/SA:LReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
RabbitMQ amqp091-go: Missing Explicit TLS Minimum Version Configuration In URI Parser
CVE-2026-77405 / GHSA-33mj-cw25-m34h
More information
Details
Summary
A structural security weakness exists in the AMQP client's TLS configuration generator (
tlsConfigFromURI). When constructing a*tls.Configobject from anamqps://connection URI, the library initializes the structure without explicitly defining theMinVersionfield.While modern versions of the Go compiler toolchain (Go 1.18+) default the implicit minimum version to TLS 1.2, this security posture relies entirely on an implicit toolchain dependency. If the library is compiled using legacy Go toolchains (Go < 1.18), or if a future toolchain introduces fallback behavior, the client could silently negotiate obsolete and insecure TLS 1.0 or TLS 1.1 protocols during connection handshakes with a compromised or malicious AMQP broker.
Vulnerability Details
Mechanism
The vulnerability lies in the lack of an explicit safety floor when assigning configurations inside the URI component:
In the Go standard library (
crypto/tls), leavingMinVersion: 0instructs the runtime to choose the toolchain's default minimum. Prior to Go 1.18, this default allowed negotiation down to TLS 1.0. Relying on implicit compiler configurations violates secure coding practices by decoupling the library's security posture from its source code, leaving applications vulnerable based solely on how they are built.Impact
If a client application is built with a legacy compiler environment or a custom Go runtime, an attacker capable of executing a Man-in-the-Middle (MitM) attack can force the connection to downgrade to TLS 1.0 or 1.1. This exposes the AMQP protocol data stream to well-known cryptographic vulnerabilities (such as BEAST, POODLE, or SWEET32), allowing the attacker to decrypt or alter message payloads, connection parameters, and authentication credentials.
Attack Vector
An attacker performing a network-level downgrade attack can intercept a client connection built under a legacy toolchain:
MinVersionwas never explicitly locked totls.VersionTLS12by the library, the client accepts the weak cipher suites, allowing the attacker to monitor or manipulate the underlying AMQP session data.Severity
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:H/SI:L/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
RabbitMQ amqp091-go: Silent Data Truncation and State Corruption via Shortstr Integer Overflow
CVE-2026-77408 / GHSA-j497-x9hr-x34x
More information
Details
Summary
A data integrity and protocol corruption vulnerability exists in the AMQP client's property serialization logic. When encoding AMQP short string (
shortstr) fields—such as identifiers, routing strings, and content metadata—the length of the string is explicitly cast to a fixed-size 8-bit unsigned integer (uint8).If an application provides a property string exceeding 255 bytes, the length counter silently wraps around (e.g., a length of 300 wraps to 44). As a result, the parser writes only a truncated portion of the string into the outgoing connection buffer without returning an error. This leads to silent data corruption, broken RPC routing, and unpredictable broker-side state behavior.
Vulnerability Details
Mechanism
The vulnerability resides in the wire-level serialization logic for application publishing properties:
Because Go allows silent integer truncation during explicit type casting, lengths larger than$2^8 - 1$ lose their most significant bits. The underlying stream writer reads
lengthto determine how many bytes to pull from the buffer. Because no error or boundary check accompanies this truncation, the application believes the full payload was transmitted successfully.Affected Properties
This truncation behavior affects every standard AMQP field serialized as a
shortstr:CorrelationIdReplyToMessageIdExpirationUserIdAppIdContentTypeContentEncodingTypeImpact
The critical consequence is silent protocol desynchronization at the application layer. The underlying TCP stream remains framed properly (because the shortened length matches the bytes written), but the business logic is corrupted. Distributed transactions, request-reply correlations, and tracing headers are truncated, causing downstream systems to drop messages or route them to incorrect consumers.
Attack Vector
An attacker who can influence metadata fields processed by an upstream application (such as a user-supplied tracking ID or a long content-type header) can exploit this to break system components:
CorrelationIdof 300 bytes through an application endpoint.Severity
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:H/VA:H/SC:L/SI:H/SA:LReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
RabbitMQ amqp091-go: Denial of Service via Malicious Field Length in AMQP Client
CVE-2026-77412 / GHSA-4v58-74mf-rjx3
More information
Details
Summary
A vulnerability in the readField function allows a malicious or compromised AMQP server to trigger an unhandled runtime panic in the client application, leading to an immediate crash of the entire process.
Details
When parsing incoming AMQP frames, the
readFieldfunction processes byte-array fields (type tag'x') by reading a 32-bit big-endian integer to determine the length of the data payload.If a server transmits a length value of
0xFFFFFFFF, it is interpreted by the client as a signed 32-bit integer with a value of-1. Passing a negative integer to Go's built-in make() function for slice allocation triggers an unrecoverable runtime panic (panic: len out of range).Because the reader goroutine handles network I/O without an explicit recover() wrapper, this panic propagates up to the runtime root, abruptly terminating the host application.
Attack Vector / Exploitation Scenario
An attacker capable of spoofing, compromising, or controlling an AMQP broker can exploit this flaw during two primary phases:
Impact
Availability: High. A single malformed frame can reliably crash the client process, resulting in a persistent Denial of Service (DoS) if the client automatically reconnects and receives the same payload.
Severity
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:HReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
RabbitMQ amqp091-go: Protocol Desynchronization and Frame Injection via Integer Overflow in readLongstr
CVE-2026-77411 / GHSA-c5pq-fr2g-9jpf
More information
Details
Summary
A critical stream desynchronization vulnerability has been identified in the AMQP wire-protocol parser. When parsing a long string (
readLongstr) within a table field, providing a length that exceeds the maximum signed 32-bit integer (2^31 - 1, or roughly2.1GiB) triggers an improper error-handling condition. The parser abruptly aborts the read and returns a success status ("",nil) without consuming the specified bytes from the underlying network buffer. This causes all subsequent read operations to become misaligned. The parser interprets arbitrary offsets within the remaining payload bytes as valid AMQP frame headers, leading to potential Remote Code Execution (RCE), data injection, or complete connection hijacking.Vulnerability Details
The vulnerability exists within the bounds-checking logic of the readLongstr function:
When
lengthevaluates to a value greater than0x7FFFFFFF:returnstatement."", nil(indicating a successful read of an empty string).lengthbytes. The malformed payload remains sitting in the TCP/buffer stream.Impact
As
readTablecontinues iterating over the stream under the assumption that the string was successfully parsed, the byte alignment is entirely broken.connection.close,channel.open, or message publishing frames), forcing the client/server to execute unintended actions.Severity
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:HReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
rabbitmq/amqp091-go (github.com/rabbitmq/amqp091-go)
v1.13.0Compare Source
Full Changelog
Implemented enhancements:
Fixed bugs:
Merged pull requests:
v1.12.0Compare Source
Full Changelog
Implemented enhancements:
Fixed bugs:
Merged pull requests:
v1.11.0Compare Source
Full Changelog
Implemented enhancements:
Fixed bugs:
Closed issues:
Merged pull requests:
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.