Skip to main content
Vulnerability Database/CVE-2026-67231

CVE-2026-67231: RabbitMQ Trust Store Auth Bypass Vulnerability

CVE-2026-67231 is an authentication bypass flaw in RabbitMQ trust-store plugin that allows attackers to forge certificates and bypass TLS client authentication. This post explains its impact, affected versions, and mitigation steps.

Published:

CVE-2026-67231 Overview

CVE-2026-67231 is a TLS client-authentication bypass in the RabbitMQ rabbitmq_trust_store plugin. The plugin installs a verify_fun that overrides {bad_cert, unknown_ca} and {bad_cert, selfsigned_peer} errors when a presented certificate "matches" a whitelisted one. The match key derives from extract_issuer_id/1 → public_key:pkix_issuer_id/2, producing an {IssuerName, SerialNumber} tuple taken verbatim from the presented certificate body. No public key, Subject Key Identifier (SKI), fingerprint, or signature material participates in the comparison. An attacker who knows the issuer Distinguished Name (DN) and serial of any whitelisted certificate can connect using a forged self-signed certificate. The issue is fixed in RabbitMQ versions 3.13.15, 4.0.20, 4.1.11, 4.2.6, and 4.3.0.

Critical Impact

Attackers can bypass mutual TLS authentication and impersonate trusted clients using only non-secret certificate metadata.

Affected Products

  • RabbitMQ Server versions prior to 3.13.15
  • RabbitMQ Server 4.0.x prior to 4.0.20, 4.1.x prior to 4.1.11, and 4.2.x prior to 4.2.6
  • Deployments with the rabbitmq_trust_store plugin enabled and used as the TLS verify_fun

Discovery Timeline

  • 2026-09-23 - CVE-2026-67231 published to the National Vulnerability Database (NVD)
  • 2026-09-23 - Last updated in NVD database

Technical Details for CVE-2026-67231

Vulnerability Analysis

The RabbitMQ trust-store plugin performs certificate whitelisting to permit peers whose certificates would otherwise fail path validation. When the TLS handshake produces {bad_cert, unknown_ca} or {bad_cert, selfsigned_peer}, the plugin's verify_fun overrides the failure if the presented certificate matches a whitelisted entry. The matching function is_whitelisted/1 performs a pure ets:member lookup keyed on {IssuerName, SerialNumber}.

The stored Distinguished Encoding Rules (DER) blob of the whitelisted certificate is used only for the plugin's list/0 display output. It is never compared against the presented certificate. Additionally, cacerts is [], so the whitelisted certificate never serves as a trust anchor for path validation. The result is that any self-signed certificate carrying the correct issuer DN and serial number is accepted as an authenticated client. This weakness is classified as CWE-295: Improper Certificate Validation.

Root Cause

The match key contains only fields extracted verbatim from the untrusted certificate body. Issuer DN and serial number are not secrets and carry no cryptographic binding to the certificate's key pair. The plugin never verifies the presented public key, SKI, thumbprint, or signature against the whitelisted certificate, so possession of the private key is not required.

Attack Vector

An attacker who obtains the {Issuer, Serial} tuple of any whitelisted certificate can craft a self-signed certificate with matching issuer DN and serial. This metadata is exposed through the RabbitMQ command-line interface (CLI), log output, and any copy of the certificate itself. Presenting the forged certificate to a RabbitMQ TLS listener yields client authentication as the whitelisted identity, granting access to the AMQP or management interface protected by mutual TLS. See the GitHub Security Advisory GHSA-cw8c-4m83-9c6w for technical details.

Detect Identity Attacks the Moment Authentication Fails

Singularity™ Identity surfaces credential misuse, lateral movement, and privilege escalation in real time, so you can contain the breach before it spreads.

Stop Identity Attacks

Detection Methods for CVE-2026-67231

Indicators of Compromise

  • TLS client connections presenting self-signed certificates that match whitelisted {Issuer, Serial} pairs but were not issued by the expected certification authority (CA)
  • RabbitMQ authentication events from source addresses or client identifiers not previously associated with the trusted certificate holder
  • Certificate presentations where the peer public key or SKI differs from the DER stored in the trust-store plugin

Detection Strategies

  • Extract the peer certificate from RabbitMQ TLS session logs and compare its public key fingerprint against the DER stored by rabbitmqctl for the whitelisted entry
  • Enable verbose TLS handshake logging on RabbitMQ listeners and alert on override events for {bad_cert, selfsigned_peer} or {bad_cert, unknown_ca}
  • Correlate AMQP or management API authentication events with expected client network origins and identity contexts

Monitoring Recommendations

  • Ingest RabbitMQ broker logs and TLS handshake telemetry into a centralized analytics platform for anomaly detection on client certificate metadata
  • Track invocations of rabbitmqctl trust_store list and other trust-store management commands that could disclose whitelisted {Issuer, Serial} values
  • Monitor for new or unusual client identifiers connecting to TLS-protected AMQP ports (5671, 15671)

How to Mitigate CVE-2026-67231

Immediate Actions Required

  • Upgrade RabbitMQ to 3.13.15, 4.0.20, 4.1.11, 4.2.6, or 4.3.0 as soon as feasible
  • Audit which certificates are currently whitelisted through the rabbitmq_trust_store plugin and treat their {Issuer, Serial} pairs as compromised
  • Rotate credentials, authorizations, and any secrets accessible to identities that were authenticated via the trust-store plugin

Patch Information

RabbitMQ addressed the flaw in the versions listed in GitHub Release v4.2.6 and GitHub Release v4.3.0. Backports are available for the 3.13.x, 4.0.x, and 4.1.x release branches. Review the GitHub Security Advisory GHSA-cw8c-4m83-9c6w for full remediation guidance.

Workarounds

  • Disable the rabbitmq_trust_store plugin using rabbitmq-plugins disable rabbitmq_trust_store if it is not required
  • Replace trust-store whitelisting with a properly configured cacertfile and standard TLS verify_peer path validation
  • Issue whitelisted certificates from a dedicated internal CA and rotate any whose {Issuer, Serial} values may have been exposed through logs or CLI output
bash
# Configuration example
rabbitmq-plugins disable rabbitmq_trust_store

# Enforce standard TLS path validation in rabbitmq.conf
listeners.ssl.default              = 5671
ssl_options.cacertfile             = /etc/rabbitmq/ssl/ca_bundle.pem
ssl_options.certfile               = /etc/rabbitmq/ssl/server_cert.pem
ssl_options.keyfile                = /etc/rabbitmq/ssl/server_key.pem
ssl_options.verify                 = verify_peer
ssl_options.fail_if_no_peer_cert   = true

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.