CVE-2026-106123: RabbitMQ Java Client: AMQP password leaked in exception

GHSA-h6w7-qmcm-q6xrMEDIUM
Published October 7, 2026
CISO Take

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.

Sources:NVDGitHub AdvisoryEPSSrabbitmq-java-client GitHub security advisoryATLAS

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?

Trigger
A malformed AMQP URI, such as a password containing a space, makes ConnectionFactoryConfigurator.load() fail at startup.
Credential Exposure
The library places the full URI with the plaintext password into the exception message, which flows to logs, APM and CI output.
AML.T0055
Credential Harvesting
An adversary or insider with read access to those logs or tickets extracts the broker password.
AML.T0055
Impact
The attacker uses the credential to connect to the broker and read or inject messages in AI pipeline queues.
AML.T0012

What systems are affected?

PackageEcosystemVulnerable RangePatched
Microsoft APMmaven<= 5.34.05.35.0
4.1KPushed 8d ago63% patched~20d to patchFull package profile →

Do you use Microsoft APM? You're affected.

How severe is it?

CVSS 3.1
N/A
EPSS
0.2%
chance of exploitation in 30 days
Higher than 15% of all CVEs
Exploitation Status
No known exploitation
Sophistication
Trivial

What should I do?

1 step
  1. 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 does CISA's SSVC say?

DecisionTrack
Exploitationnone
AutomatableNo
Technical Impactpartial

Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.

How is it classified?

Data LeakagePrivacy ViolationFrameworkAPIAML.T0012AML.T0055

Which compliance frameworks are affected?

This CVE is relevant to:

ISO 42001
A.7.4-Quality of data for AI systems
NIST AI RMF
MANAGE 2.3-Mechanisms to respond to and recover from unforeseen risks
OWASP LLM Top 10
LLM03-Supply Chain

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

Message queue-based ML pipelinesDistributed training orchestrationModel serving task queuesAgent frameworks using AMQP messaging

MITRE ATLAS Techniques

AML.T0012Valid Accounts
AML.T0055Unsecured Credentials

Compliance Controls Affected

ISO 42001: A.7.4
NIST AI RMF: MANAGE 2.3
OWASP LLM Top 10: LLM03

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-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.

Timeline

Published
October 7, 2026
Last Modified
October 19, 2026
First Seen
October 7, 2026

Related Vulnerabilities