com.rabbitmq:amqp-client: RabbitMQ Java client: plaintext broker credentials leaked in exception message from ConnectionFactoryConfigurator.load()
What fixes it
- 5.35.0com.rabbitmq:amqp-client, mavenGitHub
<dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.35.0</version></dependency> - 5.35.0com.rabbitmq:amqp-client, MavenOSV
<dependency><groupId>com.rabbitmq</groupId><artifactId>amqp-client</artifactId><version>5.35.0</version></dependency>
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
Summary
When property-file/Map-based ConnectionFactory setup fails while parsing the uri key, the library wraps the underlying exception with the raw connection string — including the plaintext username and password — baked verbatim into the new exception's message.
Details
ConnectionFactoryConfigurator.load(ConnectionFactory, Map<String,String>, String) (src/main/java/com/rabbitmq/client/ConnectionFactoryConfigurator.java, lines 142-155):
String uri = properties.get(prefix + "uri"); if (uri != null) { try { cf.setUri(uri); } catch (URISyntaxException e) { throw new IllegalArgumentException("Error while setting AMQP URI: " + uri, e); } catch (NoSuchAlgorithmException e) { throw new IllegalArgumentException("Error while setting AMQP URI: " + uri, e); } catch (KeyManagementException e) { throw new IllegalArgumentException("Error while setting AMQP URI: " + uri, e); } }
uri is the full AMQP URI — amqp(s)://username:password@host:port/vhost — concatenated verbatim into the exception message on any of the three catch branches. No masking/redaction exists anywhere in this class or in ConnectionFactory.setUri(). This is the library's documented Spring-Boot/ops-config entry point (ConnectionFactory.load(...), available since 4.4.0), not obscure internal code.
RabbitMQ's own AMQP URI spec (rabbitmq.com/docs/uri-spec) explicitly warns the password "should avoid leaking... the full URI should not appear in exception messages or log records." A sibling method twenty lines away (ConnectionFactory.setUri(URI)) already avoids this exact mistake for a different malformed-URI case — this path wasn't caught by that same care.
Note: KeyManagementException is declared in the throws clause but not actually reachable via the current setUri(String) → setUri(URI) call chain — the two real, reachable leak surfaces are the URISyntaxException branch (trivial, deterministic, scheme-independent) and the NoSuchAlgorithmException branch (real but narrower — amqps:// only, requires a restricted/FIPS-style default TLS provider).
PoC
Map<String, String> props = new HashMap<>(); props.put("uri", "amqp://svc-account:P@ssW0rd With Space!@broker.internal:5672/prod"); ConnectionFactory cf = new ConnectionFactory(); ConnectionFactoryConfigurator.load(cf, props, "");
Throws:
java.lang.IllegalArgumentException: Error while setting AMQP URI: amqp://svc-account:P@ssW0rd With Space!@broker.internal:5672/prod
A password containing a space is entirely ordinary under common corporate password policies, and java.net.URI rejects such input outright — this isn't a contrived edge case.
Impact
Default Spring Boot startup-failure logging, an APM/error tracker, a CI job log, or an engineer pasting a stack trace into an internal or public ticket now holds the plaintext broker password, in a system typically far less access-controlled than wherever the credential is normally stored. Note the underlying URISyntaxException also carries the same string in its own message, chained as the cause of RabbitMQ's IllegalArgumentException — so removing RabbitMQ's own + uri concatenation alone would not fully close this; the raw secret-bearing string also shouldn't be handed to new URI() for error-reporting purposes at all.
Suggested fix: don't include the raw uri string in the wrapped exception's message — redact the userinfo component (or omit the URI entirely) before including it in any exception text.
Text from GitHub Advisory Database
Affected versions 54
- com.rabbitmq:amqp-client, maven<= 5.34.0GitHub
- rabbitmq-java-clientaffected: < 5.35.0CVE List
- amqp-clientaffected: < 5.35.0CVE List
- com.rabbitmq:amqp-client, Mavenfrom first release, fixed in 5.35.0OSV
- com.rabbitmq:amqp-client, Maven1.3.0OSV
- com.rabbitmq:amqp-client, Maven1.5.4OSV
- com.rabbitmq:amqp-client, Maven1.5.5OSV
- com.rabbitmq:amqp-client, Maven1.6.0OSV
- com.rabbitmq:amqp-client, Maven1.7.2OSV
- com.rabbitmq:amqp-client, Maven1.8.0OSV
- com.rabbitmq:amqp-client, Maven1.8.1OSV
- com.rabbitmq:amqp-client, Maven2.0.0OSV
- com.rabbitmq:amqp-client, Maven2.1.0OSV
- com.rabbitmq:amqp-client, Maven2.1.1OSV
- com.rabbitmq:amqp-client, Maven2.2.0OSV
- com.rabbitmq:amqp-client, Maven2.3.0OSV
- com.rabbitmq:amqp-client, Maven2.3.1OSV
- com.rabbitmq:amqp-client, Maven2.4.1OSV
- com.rabbitmq:amqp-client, Maven2.5.0OSV
- com.rabbitmq:amqp-client, Maven2.5.1OSV
- com.rabbitmq:amqp-client, Maven2.6.0OSV
- com.rabbitmq:amqp-client, Maven2.6.1OSV
- com.rabbitmq:amqp-client, Maven2.7.0OSV
- com.rabbitmq:amqp-client, Maven2.7.1OSV
- com.rabbitmq:amqp-client, Maven2.8.0OSV
- com.rabbitmq:amqp-client, Maven2.8.1OSV
- com.rabbitmq:amqp-client, Maven2.8.2OSV
- com.rabbitmq:amqp-client, Maven2.8.3OSV
- com.rabbitmq:amqp-client, Maven2.8.4OSV
- com.rabbitmq:amqp-client, Maven2.8.5OSV
- com.rabbitmq:amqp-client, Maven2.8.6OSV
- com.rabbitmq:amqp-client, Maven2.8.7OSV
- com.rabbitmq:amqp-client, Maven3.0.0OSV
- com.rabbitmq:amqp-client, Maven3.0.1OSV
- com.rabbitmq:amqp-client, Maven3.0.2OSV
- com.rabbitmq:amqp-client, Maven3.0.3OSV
- com.rabbitmq:amqp-client, Maven3.0.4OSV
- com.rabbitmq:amqp-client, Maven3.1.0OSV
- com.rabbitmq:amqp-client, Maven3.1.1OSV
- com.rabbitmq:amqp-client, Maven3.1.2OSV
- com.rabbitmq:amqp-client, Maven3.1.3OSV
- com.rabbitmq:amqp-client, Maven3.1.4OSV
- com.rabbitmq:amqp-client, Maven3.2.0OSV
- com.rabbitmq:amqp-client, Maven3.2.1OSV
- com.rabbitmq:amqp-client, Maven3.2.2OSV
- com.rabbitmq:amqp-client, Maven3.2.3OSV
- com.rabbitmq:amqp-client, Maven3.2.4OSV
- com.rabbitmq:amqp-client, Maven3.3.0OSV
- com.rabbitmq:amqp-client, Maven3.3.1OSV
- com.rabbitmq:amqp-client, Maven3.3.2OSV
- com.rabbitmq:amqp-client, Maven3.3.3OSV
- com.rabbitmq:amqp-client, Maven3.3.4OSV
- com.rabbitmq:amqp-client, Maven3.3.5OSV
- com.rabbitmq:amqp-client, Maven3.4.0OSV
References 6
- github.com/rabbitmq/rabbitmq-java-client/commit/daca1875cdb8b8c0acce78f71103b21a05478446Fixvia CVE List
- github.com/rabbitmq/rabbitmq-java-client/releases/tag/v5.35.0Fixvia CVE List
- github.com/rabbitmq/rabbitmq-java-client/security/advisories/GHSA-h6w7-qmcm-q6xrAdvisoryvia CVE List
- github.com/advisories/GHSA-h6w7-qmcm-q6xrAdvisoryvia GitHub
- nvd.nist.gov/vuln/detail/CVE-2026-106123Referencevia GitHub
- github.com/rabbitmq/rabbitmq-java-client/pull/2052Referencevia CVE List