PHP2Shell: Read our blog on the critical RCE vulnerabilities affecting 70% of the Internet

CVE-2026-67419: 
RabbitMQ vulnerability analysis and mitigation

Overview

CVE-2026-67419 is a Denial of Service vulnerability in RabbitMQ's topic exchange routing engine, caused by inefficient algorithmic complexity in the trie-based topic matcher. An authenticated user who can bind a queue to a topic exchange and publish to it can craft binding keys with consecutive # wildcard segments to trigger combinatorial CPU and memory exhaustion, disrupting message routing for all tenants on the broker. The vulnerability affects RabbitMQ server versions >= 4.3.0 and < 4.3.5, and was disclosed on August 18, 2026, with a fix released in version 4.3.5. It carries a CVSS v4.0 base score of 7.1 (High) (GitHub Advisory).

Technical details

The root cause is classified as CWE-407 (Inefficient Algorithmic Complexity) and CWE-1333 (Inefficient Regular Expression Complexity). The validate_binding/2 function in rabbit_exchange_type_topic.erl unconditionally returns ok without validating binding keys, allowing consecutive # segments (e.g., #.#.#.#) to be registered. When a message is published with a matching routing key, the trie_match/7 (or legacy trie_match_v3/5) function recursively explores literal, *, and # branches without memoizing visited {trie node, remaining routing-key suffix} states, causing the same state to be reached via exponentially many distinct call paths. The number of duplicate matcher invocations follows a central binomial recurrence — for n=16 consecutive # segments matched against a 16-word routing key, this yields approximately 1.16 billion recursive calls and a 300-million-element intermediate result list, all materialized inline in the routing process before deduplication occurs (GitHub Advisory, Fix Commit).

Impact

Successful exploitation allows a single low-privileged tenant to monopolize Erlang scheduler CPU for the full duration of a routing traversal, degrading or halting message routing for all vhosts and clients on the shared broker node. The routing process heap grows with the fully materialized duplicate destination list before deduplication, contributing significant memory pressure. Critically, no existing safeguard — including connection limits, channel limits, queue limits, max_message_size, or memory alarms — can interrupt a single in-progress match/3 traversal, meaning the attack is effective with a single message and requires no fan-out or repetition. There is no confidentiality or integrity impact; the attack is purely an availability disruption (GitHub Advisory).

Exploitability

A proof-of-concept exploit is publicly available in the GitHub Security Advisory, providing step-by-step reproduction instructions using rabbitmqadmin commands with specific consecutive # binding keys and matching routing keys (GitHub Advisory). Exploitation requires authentication and standard tenant-level permissions (configure on a queue, read/write on a topic exchange) — no administrator or non-default configuration is needed. The EPSS score is 0.0033, and there is no evidence of in-the-wild exploitation or CISA KEV catalog listing as of the time of this report. The vulnerability is not automatable per NVD SSVC assessment, as valid credentials are required.

Exploitation steps

  1. Authenticate to RabbitMQ: Connect to the target RabbitMQ broker via AMQP 0-9-1 using valid credentials with access to a vhost. Standard client libraries or rabbitmqadmin can be used.
  2. Declare a topic exchange: Create a topic exchange (e.g., evilx) using rabbitmqadmin declare exchange name=evilx type=topic. This requires read permission on the exchange resource.
  3. Declare a queue: Create a queue (e.g., evilq) using rabbitmqadmin declare queue name=evilq. This requires configure permission on the queue.
  4. Create a malicious binding: Bind the queue to the exchange with a consecutive-# binding key of depth n (e.g., #.#.#.#.#.#.#.#.#.#.#.# for n=12): rabbitmqadmin declare binding source=evilx destination=evilq routing_key="#.#.#.#.#.#.#.#.#.#.#.#". The broker accepts this key because validate_binding/2 performs no validation.
  5. Publish a triggering message: Publish a message to the exchange with a routing key of matching depth (e.g., a.a.a.a.a.a.a.a.a.a.a.a for n=12): rabbitmqadmin publish exchange=evilx routing_key="a.a.a.a.a.a.a.a.a.a.a.a" payload="". This triggers the non-memoized recursive matcher.
  6. Observe denial of service: The routing process executes combinatorially many recursive matcher invocations (C(2n-1, n-1) duplicate results), consuming Erlang scheduler CPU and heap. For n=12, this is ~5.2 million calls; increasing n toward the ~127-segment AMQP limit makes the attack effectively unbounded. The queue receives exactly one message, confirming all extra work is wasted (GitHub Advisory).

Indicators of compromise

  • Network: AMQP queue.bind frames declaring binding keys containing three or more consecutive # segments (e.g., #.#.# or longer) on topic exchanges; AMQP basic.publish frames to topic exchanges with routing keys of matching depth shortly after such bindings are created.
  • Logs: RabbitMQ broker logs showing sustained high CPU usage or scheduler saturation on the routing process; log entries indicating slow or stalled message routing across multiple vhosts; Erlang VM memory warnings coinciding with publish events to topic exchanges.
  • Process: Erlang scheduler threads pegged at 100% CPU during a single match/3 call; unusually large heap size for the routing process observable via rabbitmqctl eval 'erlang:process_info(self(), memory).'; broker-wide message routing latency spike following a single publish event.
  • Broker State: Presence of topic exchange bindings with three or more consecutive # wildcards in the binding key, detectable via rabbitmqctl list_bindings or the management API (GET /api/bindings).

Mitigation and workarounds

Upgrade RabbitMQ to version 4.3.5 or later, which introduces two fixes: (1) validate_binding/2 now rejects binding keys containing more than two # wildcard segments with an AMQP 406 error, and (2) trie_match/7 adds memoization of {trie node, remaining routing-key} states when two or more # edges have been traversed, collapsing the combinatorial recurrence to polynomial cost (RabbitMQ 4.3.5 Release, Fix Commit). There is no effective configuration-level workaround — any account able to bind and publish on a topic exchange can trigger the behavior, and no setting bounds per-routing work or rejects consecutive-# binding keys in unpatched versions. As an interim measure, restrict queue binding and publishing permissions to trusted users only, and audit existing topic exchange bindings for consecutive # patterns (GitHub Advisory).

Additional resources

Linux Distribution fix status

Fix availability across major Linux distributions and their releases.

Debian

Fixed

bookworm

rabbitmq-server

Fixed

sid

rabbitmq-server: 4.3.6-1

Fixed

trixie

rabbitmq-server

Fixed

Ubuntu

Unknown

bionic (esm-infra)

rabbitmq-server

Unknown

devel

rabbitmq-server

Unknown

focal (esm-infra)

rabbitmq-server

Unknown

jammy

rabbitmq-server

Unknown

noble

rabbitmq-server

Unknown

resolute

rabbitmq-server

Unknown

xenial (esm-infra-legacy)

rabbitmq-server

Unknown

RHEL / CentOS

Unknown

Source: This report was generated using AI

Related RabbitMQ vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-67414MEDIUM6
  • RabbitMQ logoRabbitMQ
  • rabbitmq-server
NoYesOct 14, 2026
CVE-2026-67418MEDIUM5.3
  • RabbitMQ logoRabbitMQ
  • rabbitmq-server
NoYesOct 14, 2026
CVE-2026-67416MEDIUM5.3
  • RabbitMQ logoRabbitMQ
  • rabbitmq-server
NoYesOct 14, 2026
CVE-2026-67421MEDIUM4.5
  • RabbitMQ logoRabbitMQ
  • rabbitmq-server
NoYesSep 25, 2026
CVE-2026-67420LOW2.3
  • RabbitMQ logoRabbitMQ
  • rabbitmq-server
NoYesSep 25, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management