The RabbitMQ Java client (com.rabbitmq:amqp-client, versions up to 5.34.0) copies the full AMQP connection URI, including the plaintext username and password, into the exception message when ConnectionFactoryConfigurator.load() fails to parse the URI. Anyone who can read the resulting stack trace in startup logs, APM or error trackers, CI output, or support tickets then holds the broker credential. The flaw is not remotely exploitable on its own: it needs a malformed URI, such as a password containing a space, and access to the logs. EPSS is 0.00143 (the feed labels this the 97th percentile, which looks inconsistent with a score that low), there is no public exploit or Nuclei template, and the CVE is not in CISA KEV. Package data shows 0 tracked downstream dependents. The practical risk is credential exposure through log pipelines that are often less tightly controlled than a secrets vault. Upgrade to 5.35.0, rotate any broker credentials that may already appear in logs, and scrub existing log stores. The CWE tag (CWE-509) looks wrong for a credential-in-error-message issue; CWE-209 or CWE-532 would fit better.
What is the risk?
Medium, leaning low for most environments. No remote exploitation is possible, and no exploit, KEV listing or SSVC decision exists. Exposure depends on two conditions: the config-driven load() path is in use, and the URI fails to parse (or, for amqps, TLS initialization fails). When that happens, the leaked secret is the broker password, which can give an attacker read/write access to message queues. Queues in AI/ML systems may carry inference requests, training events or agent task messages. The AI/ML relevance is indirect: RabbitMQ is generic messaging infrastructure, and the 'AI Category' tag here reflects its use as a component of AI pipelines. The package risk score is 0/100 and 13 other CVEs exist in the same package.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| Microsoft APM | maven | <= 5.34.0 | 5.35.0 |
Do you use Microsoft APM? You're affected.
How severe is it?
What should I do?
1 step1) Upgrade com.rabbitmq:amqp-client to 5.35.0 or later (fix: PR #2052, commit daca1875). 2) Rotate broker credentials for any service that uses ConnectionFactoryConfigurator.load() or ConnectionFactory.load() and has logged startup failures. 3) Search log stores, APM and error trackers, CI logs and tickets for 'Error while setting AMQP URI' and for amqp:// or amqps:// strings containing credentials, then purge or redact the matches. 4) As a workaround, supply credentials through separate properties or a secrets manager rather than embedding them in the URI, and URL-encode special characters in passwords. 5) Add log-redaction rules for the userinfo part of AMQP URIs. 6) Detect: alert on the exception text above in application logs and scan repositories and CI output for embedded broker credentials.
What does CISA's SSVC say?
Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-106123?
The RabbitMQ Java client (com.rabbitmq:amqp-client, versions up to 5.34.0) copies the full AMQP connection URI, including the plaintext username and password, into the exception message when ConnectionFactoryConfigurator.load() fails to parse the URI. Anyone who can read the resulting stack trace in startup logs, APM or error trackers, CI output, or support tickets then holds the broker credential. The flaw is not remotely exploitable on its own: it needs a malformed URI, such as a password containing a space, and access to the logs. EPSS is 0.00143 (the feed labels this the 97th percentile, which looks inconsistent with a score that low), there is no public exploit or Nuclei template, and the CVE is not in CISA KEV. Package data shows 0 tracked downstream dependents. The practical risk is credential exposure through log pipelines that are often less tightly controlled than a secrets vault. Upgrade to 5.35.0, rotate any broker credentials that may already appear in logs, and scrub existing log stores. The CWE tag (CWE-509) looks wrong for a credential-in-error-message issue; CWE-209 or CWE-532 would fit better.
Is CVE-2026-106123 actively exploited?
No confirmed active exploitation of CVE-2026-106123 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-106123?
1) Upgrade com.rabbitmq:amqp-client to 5.35.0 or later (fix: PR #2052, commit daca1875). 2) Rotate broker credentials for any service that uses ConnectionFactoryConfigurator.load() or ConnectionFactory.load() and has logged startup failures. 3) Search log stores, APM and error trackers, CI logs and tickets for 'Error while setting AMQP URI' and for amqp:// or amqps:// strings containing credentials, then purge or redact the matches. 4) As a workaround, supply credentials through separate properties or a secrets manager rather than embedding them in the URI, and URL-encode special characters in passwords. 5) Add log-redaction rules for the userinfo part of AMQP URIs. 6) Detect: alert on the exception text above in application logs and scan repositories and CI output for embedded broker credentials.
What systems are affected by CVE-2026-106123?
This vulnerability affects the following AI/ML architecture patterns: Message queue-based ML pipelines, Distributed training orchestration, Model serving task queues, Agent frameworks using AMQP messaging.
What is the CVSS score for CVE-2026-106123?
No CVSS score has been assigned yet.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0012Valid AccountsAML.T0055Unsecured CredentialsCompliance Controls Affected
What are the technical details?
Original Advisory
### 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.
Exploitation Scenario
A service that runs an ML inference or training pipeline reads its RabbitMQ URI from a property file, and the password contains a space. On deployment the URI fails to parse, and the library throws an IllegalArgumentException whose message includes the full URI with the plaintext password. The stack trace goes to the central logging platform, an error tracker and a CI job log, and an engineer pastes it into a ticket. An adversary who has read access to any of those systems, or a low-privileged insider, extracts the credential. They then connect to the broker and read or publish messages on the queues that feed the AI pipeline.
Weaknesses (CWE)
CWE-509Replicating Malicious Code (Virus or Worm)PrimaryCWE-209Generation of Error Message Containing Sensitive InformationCWE-509 — Replicating Malicious Code (Virus or Worm): Replicating malicious code, including viruses and worms, will attempt to attack other systems once it has successfully compromised the target system or the product.
- [Operation] Antivirus software scans for viruses or worms.
- [Installation] Always verify the integrity of the software that is being installed.
Source: MITRE CWE corpus.
References
- github.com/advisories/GHSA-h6w7-qmcm-q6xr
- github.com/rabbitmq/rabbitmq-java-client/commit/daca1875cdb8b8c0acce78f71103b21a05478446
- github.com/rabbitmq/rabbitmq-java-client/pull/2052
- github.com/rabbitmq/rabbitmq-java-client/releases/tag/v5.35.0
- github.com/rabbitmq/rabbitmq-java-client/security/advisories/GHSA-h6w7-qmcm-q6xr
- nvd.nist.gov/vuln/detail/CVE-2026-106123
Timeline
Related Vulnerabilities
CVE-2026-468589.1Oracle APM: unauthenticated write/DoS via JVM Diagnostics
Same package: apmCVE-2026-579478.5Pinpoint APM: SSRF via alarm webhook registration
Same package: apmCVE-2022-292637.8F5 BIG-IP APM: insecure temp files enable local privesc
Same package: apmCVE-2026-455397.4Microsoft APM: symlink attack leaks host files in agent deps
Same package: apmCVE-2026-579486.8Pinpoint: insecure JWT cookie enables session hijacking
Same package: apm