RabbitMQ MQTT 5: inapplicable PUBLISH property disconnects matching subscribers
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 3.13.19, 4.0.24, 4.1.15, 4.2.10, 4.3.5
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: no
- Technical impact: partial
Summary
RabbitMQ is a messaging and streaming broker. From 3.13.0 until 3.13.19, 4.0.24, 4.1.15, 4.2.10, and 4.3.5, the MQTT 5 parser in deps/rabbitmq_mqtt/src/rabbit_mqtt_packet.erl accepts Request-Problem-Information on PUBLISH packets even though the property is valid only for CONNECT. An authenticated publisher with topic write permission can cause the broker to store and route that inapplicable property to a separately authenticated matching subscriber. When the subscriber path serializes the outbound PUBLISH, serialise_prop/2 has no matching clause, and the uncontained function_clause exception closes the victim MQTT or Web MQTT connection. The publisher connection and broker remain available, and queued replay, retained-message persistence, and broker-wide denial of service were not established. This issue is fixed in versions 3.13.19, 4.0.24, 4.1.15, 4.2.10, and 4.3.5.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: partial
- Record last updated
Affected versions
- rabbitmq rabbitmq-server
From 3.13.0 · fixed in 3.13.19; From 4.0.0 · fixed in 4.0.24; From 4.1.0 · fixed in 4.1.15; From 4.2.0 · fixed in 4.2.10; From 4.3.0 · fixed in 4.3.5
- rabbitmqBitnami
From 3.13.0 · fixed in 3.13.19; From 4.0.0 · fixed in 4.0.24; From 4.1.0 · fixed in 4.1.15; From 4.2.0 · fixed in 4.2.10; From 4.3.0 · fixed in 4.3.5