CVE-2026-77407: RabbitMQ amqp091-go Plaintext Credential Exposure Vulnerability

HIGH
Advisory Identifier: GHSA-27gv-rfvv-22mv
CWE-316
Published
Advisory Summary

CVE-2026-77407 is a HIGH plaintext credential exposure vulnerability (CWE-316: Cleartext Storage of Sensitive Information in Memory) affecting RabbitMQ amqp091-go libraries in the Go ecosystem. The issue involves plaintext credential exposure via exported plain authentication struct fields. Remediation is available by upgrading affected packages to version 1.13.0.

CVE-2026-77407 at a Glance

CVE Identifier CVE-2026-77407
GHSA Identifier GHSA-27gv-rfvv-22mv
Severity HIGH
CVSS v3.1 Base Score N/A
CWE Classification CWE-316: Cleartext Storage of Sensitive Information in Memory
Affected Product RabbitMQ amqp091-go
Package Ecosystem Go
Published Date
Last Updated

How to Fix CVE-2026-77407

To remediate this vulnerability, upgrade all affected RabbitMQ amqp091-go dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

github.com/rabbitmq/amqp091-go fixed: 1.13.0
Upgrade github.com/rabbitmq/amqp091-go to 1.13.0
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

inspect dependencies for github.com/rabbitmq/amqp091-go

How to Check if You Are Affected

To determine whether your application is affected by CVE-2026-77407, inspect your project dependencies for RabbitMQ amqp091-go:

inspect dependencies for github.com/rabbitmq/amqp091-go

Analyze the terminal output to locate any version of RabbitMQ amqp091-go in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 1.13.0), your application is affected.

Note: Verify declared build manifests and deployed runtime container environments.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-316: Cleartext Storage of Sensitive Information in Memory, where the product stores sensitive information in cleartext in memory. In RabbitMQ amqp091-go, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

## Summary An information disclosure vulnerability exists in the AMQP client implementation's authentication handling configuration. Following a successful connection handshake, the `Connection.Config.SASL` field stores the `Authentication` implementation state used to establish the session. For standard `PLAIN` authentication, this state utilizes the `PlainAuth` struct, which defines both `Username` and `Password` as 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 `*Connection` object 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: ```go // auth.go:21-23 type PlainAuth struct { Username string Password string // exported plaintext } ``` When an application initializes a connection, the `PlainAuth` object 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 `Password` is 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 `*Connection` object will inadvertently read the plaintext password, including: * **Reflective Loggers:** Structured logging frameworks that serialize nested configuration structs into JSON/Log formats. * **APM & Performance Agents:** Automated telemetry or Application Performance Monitoring tools that capture state snapshots. * **Debugging & Panic Handlers:** Mid-tier software or dump libraries designed to capture goroutine state or print deep struct hierarchies upon program errors or signals. ### 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: 1. **Configuration Dump:** An operator configures a standard reflective logger or third-party APM package to capture system state parameters, including the active AMQP `*Connection` object. 2. **Reflective Access:** The inspection engine uses Go's `reflect` package to walk the structural hierarchy, pulling the string value from `Connection.Config.SASL.(*PlainAuth).Password`. 3. **Exfiltration:** The plaintext password is written to standard system logs, which are then scraped into shared logging aggregators, exposing production infrastructure credentials to a wider audience.

CVE-2026-77407 Affected RabbitMQ amqp091-go Versions

1 component(s)
Fixed Versions:
1.13.0
Product / Package Ecosystem Affected Versions Fixed Version
github.com/rabbitmq/amqp091-go
Go
< 1.13.0
1.13.0

References

Frequently Asked Questions

What is CVE-2026-77407?
CVE-2026-77407 is a security vulnerability in RabbitMQ amqp091-go involving Plaintext Credential Exposure via Exported PLAIN Authentication Struct Fields under CWE-316: Cleartext Storage of Sensitive Information in Memory.
Which RabbitMQ amqp091-go versions are affected?
Affected versions include releases prior to 1.13.0 across affected packages: github.com/rabbitmq/amqp091-go.
What version fixes CVE-2026-77407?
Upgrading to 1.13.0 (or the latest patched release for your respective branch) resolves the vulnerability.
Is github.com/rabbitmq/amqp091-go affected?
Yes, github.com/rabbitmq/amqp091-go is affected in releases prior to 1.13.0. Upgrade your dependency to 1.13.0 or later.
What CWE is associated with CVE-2026-77407?
CVE-2026-77407 is classified under CWE-316: Cleartext Storage of Sensitive Information in Memory (The product stores sensitive information in cleartext in memory.).
How can I check Go dependencies for CVE-2026-77407?
Run the dependency tree command: 'inspect dependencies for github.com/rabbitmq/amqp091-go'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-27gv-rfvv-22mv",
  "modified" : "2026-09-17T17:04:10Z",
  "published" : "2026-09-17T17:04:10Z",
  "aliases" : [ "CVE-2026-77407" ],
  "summary" : "RabbitMQ amqp091-go: Plaintext Credential Exposure via Exported PLAIN Authentication Struct Fields",
  "details" : "## Summary\nAn information disclosure vulnerability exists in the AMQP client implementation's authentication handling configuration. Following a successful connection handshake, the `Connection.Config.SASL` field stores the `Authentication` implementation state used to establish the session. \n\nFor standard `PLAIN` authentication, this state utilizes the `PlainAuth` struct, which defines both `Username` and `Password` as 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 `*Connection` object can read and expose the raw credentials.\n\n---\n\n## Vulnerability Details\n\n### Mechanism\nThe vulnerability stems from the structural design of the configuration storage used during and after the AMQP handshake:\n\n```go\n// auth.go:21-23\ntype PlainAuth struct {\n    Username string\n    Password string  // exported plaintext\n}\n```\n\nWhen an application initializes a connection, the `PlainAuth` object 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. \n\nBecause `Password` is an exported string field, standard automated inspection mechanisms can read its value without restriction.\n\n### Affected Code Paths & Integrations\nAny sub-component or library that traverses or reads the `*Connection` object will inadvertently read the plaintext password, including:\n* **Reflective Loggers:** Structured logging frameworks that serialize nested configuration structs into JSON/Log formats.\n* **APM & Performance Agents:** Automated telemetry or Application Performance Monitoring tools that capture state snapshots.\n* **Debugging & Panic Handlers:** Mid-tier software or dump libraries designed to capture goroutine state or print deep struct hierarchies upon program errors or signals.\n\n### Impact\nThe 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.\n\n---\n\n## Attack Vector\nAn 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:\n\n1. **Configuration Dump:** An operator configures a standard reflective logger or third-party APM package to capture system state parameters, including the active AMQP `*Connection` object.\n2. **Reflective Access:** The inspection engine uses Go's `reflect` package to walk the structural hierarchy, pulling the string value from `Connection.Config.SASL.(*PlainAuth).Password`.\n3. **Exfiltration:** The plaintext password is written to standard system logs, which are then scraped into shared logging aggregators, exposing production infrastructure credentials to a wider audience.",
  "severity" : [ {
    "type" : "CVSS_V4",
    "score" : "CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:H/VI:N/VA:N/SC:H/SI:L/SA:L"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "Go",
      "name" : "github.com/rabbitmq/amqp091-go"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "fixed" : "1.13.0"
      } ]
    } ]
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/rabbitmq/amqp091-go/security/advisories/GHSA-27gv-rfvv-22mv"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-77407"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/rabbitmq/amqp091-go/pull/350"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/rabbitmq/amqp091-go/commit/fa013b8447eb60988db3c9281ff6b981e4d2fb4f"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/rabbitmq/amqp091-go"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/rabbitmq/amqp091-go/releases/tag/v1.13.0"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-316" ],
    "severity" : "HIGH",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-09-17T17:04:10Z",
    "nvd_published_at" : "2026-09-16T15:17:49Z"
  }
}