Executive brief
RabbitMQ's AMQP Go client library stores PLAIN authentication credentials (username and password) in plaintext within an exported, in-memory configuration field that persists for the lifetime of the connection. Any code with access to the connection object—including reflective loggers, monitoring tools, debugging utilities, or log aggregation frameworks—can read and expose these raw credentials to logs, external systems, or operators without direct authorization.
Technical details
The vulnerability is a credential exposure flaw in the `amqp091-go` library's authentication handling. The `PlainAuth` struct defines `Username` and `Password` as publicly exported string fields, which are stored directly in the `Connection.Config.SASL` field and retained in-memory for the connection's lifetime. Any code path that accesses the `*Connection` object using Go's reflection capabilities—such as structured logging frameworks serializing state, APM agents capturing snapshots, or panic handlers dumping goroutine state—can retrieve the plaintext password without restriction. The attack does not require remote code execution; it leverages legitimate debugging, monitoring, or logging integrations to harvest credentials and transmit them to external log infrastructure where they may be accessible to unprivileged operators or log archive readers. No patch information is currently available in the advisory.
Affected products
- RabbitMQ amqp091-go
Timeline
- 2026-09-17: disclosed