CVE-2026-106123 Overview
CVE-2026-106123 is an information disclosure vulnerability in the RabbitMQ Java client library. The flaw exists in ConnectionFactoryConfigurator.load(), which embeds the raw AMQP URI inside wrapped exceptions when URI parsing fails. Because AMQP URIs commonly carry plaintext usernames and passwords, any surface that captures these exceptions can leak broker credentials. Affected destinations include startup logs, application performance monitoring (APM) systems, continuous integration (CI) output, and stack traces shared during troubleshooting. The issue is categorized under [CWE-509] and is fixed in version 5.35.0.
Critical Impact
Broker credentials embedded in AMQP connection strings can be exposed to log aggregators, APM tools, and anyone with access to copied stack traces.
Affected Products
- RabbitMQ Java client library versions prior to 5.35.0
- Java and JVM-based applications using ConnectionFactoryConfigurator.load() to connect to RabbitMQ nodes
- Downstream systems that ingest application logs, stack traces, or APM telemetry from affected clients
Discovery Timeline
- 2026-10-06 - CVE-2026-106123 published to the National Vulnerability Database (NVD)
- 2026-10-06 - Last updated in NVD database
Technical Details for CVE-2026-106123
Vulnerability Analysis
The RabbitMQ Java client exposes ConnectionFactoryConfigurator.load() as the standard entry point for configuring a ConnectionFactory from properties. When the configurator parses an AMQP URI through java.net.URI and parsing fails, it throws a URISyntaxException. Prior to 5.35.0, the client wrapped this exception with a message that included the full raw URI string. AMQP URIs follow the format amqp://user:password@host:port/vhost, so credentials are present inline. The wrapped exception then propagates to any caller or logging framework that records the stack trace.
Root Cause
The root cause is improper handling of sensitive data in error messages, consistent with [CWE-509] (Replicated code vulnerability leading to credential exposure in diagnostics). The configurator treated the URI as a benign configuration value rather than a secret-bearing string. Any failure path that formatted the URI into an error message created a long-lived textual copy of the credentials outside the application's secret-handling boundaries.
Attack Vector
Exploitation does not require network interaction with the broker itself. An actor with read access to logs, APM dashboards, CI job output, or shared stack traces can recover the credentials. Common triggers include a malformed URI from an environment variable, a misconfigured property file, or a URI containing characters requiring percent-encoding. Once the credentials surface in persistent logs, downstream retention policies and third-party log processors expand the exposure window.
// Patch excerpt - src/main/java/com/rabbitmq/client/ConnectionFactoryConfigurator.java
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.net.URI;
import java.net.URISyntaxException;
import java.security.GeneralSecurityException;
import java.security.KeyManagementException;
Source: GitHub Commit daca187. The fix removes the raw URI from the wrapped exception message so parsing failures no longer serialize credentials into diagnostic output.
Detection Methods for CVE-2026-106123
Indicators of Compromise
- Stack traces or log entries containing the substring amqp:// or amqps:// followed by a user:password@ pattern
- URISyntaxException or wrapper exceptions originating from com.rabbitmq.client.ConnectionFactoryConfigurator with URI fragments included
- APM transaction errors referencing RabbitMQ connection setup and carrying URI payloads
Detection Strategies
- Scan log aggregation platforms and APM backends for regex patterns matching AMQP URIs with embedded credentials.
- Audit CI/CD pipeline artifacts, build logs, and container startup output for leaked RabbitMQ connection strings.
- Inventory Java applications using the RabbitMQ client and flag any version below 5.35.0.
Monitoring Recommendations
- Add data loss prevention (DLP) rules in log pipelines that detect and redact AMQP URIs containing userinfo components.
- Alert on new occurrences of ConnectionFactoryConfigurator exceptions after patching to confirm regression coverage.
- Review access logs for the log and APM systems to identify who has viewed historical records that may contain leaked credentials.
How to Mitigate CVE-2026-106123
Immediate Actions Required
- Upgrade the RabbitMQ Java client to version 5.35.0 or later across all JVM services.
- Rotate any RabbitMQ broker credentials that may have appeared in logs, CI output, APM data, or shared stack traces.
- Purge or redact historical log entries and APM records that contain AMQP URIs with embedded credentials.
Patch Information
The fix is available in RabbitMQ Java Client v5.35.0. The code change is tracked in Pull Request #2052 and committed in daca187. Additional context is available in the GitHub Security Advisory GHSA-h6w7-qmcm-q6xr.
Workarounds
- Supply broker credentials through dedicated properties such as username and password rather than embedding them in the AMQP URI.
- Validate AMQP URIs before passing them to ConnectionFactoryConfigurator.load() to prevent URISyntaxException from being thrown.
- Configure logging frameworks and APM agents to filter or mask any field matching the AMQP URI pattern.
# Example: externalize credentials instead of embedding them in the URI
export RABBITMQ_HOST="broker.internal"
export RABBITMQ_PORT="5672"
export RABBITMQ_USERNAME="app_user"
export RABBITMQ_PASSWORD="$(vault kv get -field=password secret/rabbitmq/app)"
# Reference in application.properties without inline credentials
# host=${RABBITMQ_HOST}
# port=${RABBITMQ_PORT}
# username=${RABBITMQ_USERNAME}
# password=${RABBITMQ_PASSWORD}
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

