CVE-2026-63336: RabbitMQ Java client TrustEverythingTrustManager Used By Default Vulnerability
MODERATECVE-2026-63336 is a MODERATE trusteverythingtrustmanager used by default vulnerability (CWE-295: Improper Certificate Validation) affecting RabbitMQ Java client libraries in the Maven ecosystem. The issue involves trusteverythingtrustmanager used by default in usesslprotocol() enables mitm. Remediation is available by upgrading affected packages to version 5.33.0.
CVE-2026-63336 at a Glance
How to Fix CVE-2026-63336
To remediate this vulnerability, upgrade all affected RabbitMQ Java client dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.33.0</version>
</dependency>
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
mvn dependency:tree -Dincludes=com.rabbitmq
How to Check if You Are Affected
To determine whether your Java application is affected by CVE-2026-63336, inspect your build dependencies using the Maven Dependency Plugin:
mvn dependency:tree -Dincludes=com.rabbitmq
Analyze the terminal output to locate any version of RabbitMQ Java client in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 5.33.0), your application is affected.
Note: The mvn dependency:tree -Dincludes=com.rabbitmq command inspects the resolved dependency graph declared in your project's POM files; it does not perform automated security scanning or inspect runtime dynamic classpaths. Always verify runtime container classpaths and shaded JARs.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-295: Improper Certificate Validation, where the product does not validate, or incorrectly validates, a certificate. In RabbitMQ Java client, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2026-63336 Affected RabbitMQ Java client Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
com.rabbitmq:amqp-client
|
Maven |
< 5.33.0
|
5.33.0
|
References
Frequently Asked Questions
What is CVE-2026-63336?
Which RabbitMQ Java client versions are affected?
What version fixes CVE-2026-63336?
Is amqp-client affected?
What CWE is associated with CVE-2026-63336?
How can I check Maven dependencies for CVE-2026-63336?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-5m9f-rphj-c435",
"modified" : "2026-08-18T16:32:59Z",
"published" : "2026-08-18T16:32:59Z",
"aliases" : [ "CVE-2026-63336" ],
"summary" : "RabbitMQ Java client: TrustEverythingTrustManager used by default in useSslProtocol() enables MITM",
"details" : "## Vulnerability Summary\n\n`com.rabbitmq.client.TrustEverythingTrustManager` accepts ANY TLS certificate (including null chains) and is used as the default trust manager when calling `ConnectionFactory.useSslProtocol()` without arguments. Combined with hostname verification being disabled by default, this enables trivial man-in-the-middle attacks.\n\n## Affected Components\n\n- `com.rabbitmq.client.TrustEverythingTrustManager` — accepts any certificate\n- `com.rabbitmq.client.ConnectionFactory.useSslProtocol()` — uses TrustEverythingTrustManager\n- Hostname verification disabled by default (`enableHostnameVerification()` must be called explicitly)\n- `com.rabbitmq.client.ConnectionFactory.getPassword()` — returns plaintext with no redaction\n- Default port 5672 (plaintext) with PLAIN SASL — credentials sent unencrypted\n\n## POC (Verified on Java 21, amqp-client 5.25.0)\n\n```java\n// TrustEverythingTrustManager accepts ANY certificate including null\nTrustEverythingTrustManager tm = new TrustEverythingTrustManager();\ntm.checkServerTrusted(null, \"RSA\"); // No exception — accepts null cert chain\ntm.getAcceptedIssuers(); // Returns empty array — trusts all CAs\n\n// ConnectionFactory defaults\nConnectionFactory factory = new ConnectionFactory();\nfactory.useSslProtocol(); // Uses TrustEverythingTrustManager internally\n// enableHostnameVerification() NOT called by default\n\n// Credential exposure\nfactory.setPassword(\"secret_password_123\");\nfactory.getPassword(); // Returns \"secret_password_123\" — no redaction\n\n// Default plaintext port\nfactory.getPort(); // 5672 (plaintext, not 5671/TLS)\n\n// PLAIN SASL sends cleartext credentials\nPlainMechanism pm = new PlainMechanism();\n// handleChallenge() sends username+password in cleartext\n```\n\n## Attack Scenarios\n\n1. **MITM**: Attacker presents self-signed cert → `TrustEverythingTrustManager` accepts it → all RabbitMQ traffic intercepted\n2. **Credential theft**: Default plaintext port (5672) + PLAIN SASL = credentials readable on network\n3. **DNS rebinding**: No hostname verification → attacker DNS record → MITM without cert\n4. **Logging exposure**: `getPassword()` returns plaintext → credentials in logs/stack traces\n\n## Suggested Fix\n1. Deprecate `TrustEverythingTrustManager` — it should never be used in production\n2. `useSslProtocol()` should use the JVM default trust store, not TrustEverything\n3. Enable hostname verification by default\n4. Redact password in `getPassword()` or remove the public getter\n5. Warn when using PLAIN SASL without TLS",
"severity" : [ {
"type" : "CVSS_V4",
"score" : "CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:N/VA:N/SC:H/SI:L/SA:N"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "Maven",
"name" : "com.rabbitmq:amqp-client"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "5.33.0"
} ]
} ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/rabbitmq/rabbitmq-java-client/security/advisories/GHSA-5m9f-rphj-c435"
}, {
"type" : "WEB",
"url" : "https://github.com/rabbitmq/rabbitmq-java-client/pull/1999"
}, {
"type" : "WEB",
"url" : "https://github.com/rabbitmq/rabbitmq-java-client/pull/2001"
}, {
"type" : "WEB",
"url" : "https://github.com/rabbitmq/rabbitmq-java-client/commit/1e7deb2e6020c9793a81385a53ea378ec63b9339"
}, {
"type" : "WEB",
"url" : "https://github.com/rabbitmq/rabbitmq-java-client/commit/a4bf571dd368765baaa9cecfae68ce09f1bdcc01"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/rabbitmq/rabbitmq-java-client"
}, {
"type" : "WEB",
"url" : "https://github.com/rabbitmq/rabbitmq-java-client/releases/tag/v5.33.0"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-295" ],
"severity" : "MODERATE",
"github_reviewed" : true,
"github_reviewed_at" : "2026-08-18T16:32:59Z",
"nvd_published_at" : null
}
}