Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAttacker controls or compromises target's MQTT broker
-
DeliveryClient subscribes/connects with QoS 2
-
ExploitBroker sends many QoS 2 PUBLISH with distinct packet IDs
-
ExecutionBroker withholds all PUBREL packets
-
PersistMessages retained unbounded in qos2inbound map
-
ImpactHeap exhaustion crashes or degrades Vert.x application
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource allocation limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires that the Vert.x application act as an MQTT client using io.vertx:vertx-mqtt MqttClient AND process QoS 2 (exactly-once) inbound messages from a broker the attacker controls or has compromised - the malicious behavior is a broker sending QoS 2 PUBLISH packets with distinct packet IDs while withholding PUBREL. Affected versions: Vert.x [4.0.0, 4.5.34], [5.0.0, 5.0.12], [5.1.0, 5.1.9], and 5.2.0. LIMITING FACTORS: the attacker must occupy the broker role (not an arbitrary remote attacker), which is why CVSS rates AC:H; deployments that only connect to fully trusted, operator-controlled brokers, or that do not use QoS 2, are not realistically exposed. The maxInflightQueue option does NOT mitigate this because it constrains only the outbound publish path. |
| Impact | This is a genuine but bounded availability risk, not a top-tier emergency. The input CVSS 4.0 vector (AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H) scores 8.2 (High) and correctly reflects a network-reachable, availability-only impact (VC:N/VI:N - no data exposure). The key tempering signal is AC:H: exploitation requires the attacker to control the MQTT broker the client connects to, which is a position of trust rather than an opportunistic internet attack. No EPSS score, no CISA KEV listing, and no public exploit were provided, so exploitation is not confirmed in any form - treat this as a latent weakness, not an actively abused one. Signals are internally consistent (DoS-only impact, broker-dependent attack), so there is no CVSS-vs-description contradiction. Note one metadata conflict to flag: the 'Information Disclosure' tag contradicts the vector, which shows C:N/I:N and A:H - this is a memory-exhaustion denial of service, NOT information disclosure. Overall priority: moderate - patch promptly in any deployment where the Vert.x application consumes QoS 2 messages from brokers it does not fully control, but it does not warrant emergency out-of-band response. |
| Exploit ScenarioDerived | An application built on Eclipse Vert.x uses the vertx-mqtt MqttClient to subscribe to a broker that is attacker-controlled or has been compromised. The broker sends a flood of QoS 2 PUBLISH messages, each with a distinct packet identifier, and deliberately never sends the corresponding PUBREL packets. Each incomplete handshake is retained forever in the unbounded qos2inbound map, so client heap grows without limit until the application degrades or is killed by an out-of-memory error. No public exploit code was identified at time of analysis; exploitation is straightforward for any party able to act as the client's broker. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 15, 2026
Unbounded inbound memory retention in the Eclipse Vert.x MQTT client (io.vertx:vertx-mqtt) allows a malicious or compromised MQTT broker to drive the Vert.x process into memory exhaustion and eventual out-of-memory termination. Client-side applications embedded in Vert.x 4.0.0 through 4.5.34, 5.0.0 through 5.0.12, 5.1.0 through 5.1.9, and 5.2.0 that subscribe to QoS 2 (exactly-once) topics are affected; the attacker supplies QoS 2 PUBLISH packets with distinct packet identifiers and never sends the matching PUBREL, so each message is retained indefinitely in the client's internal qos2inbound map. The assessed vectors rate this AV:N/AC:H/PR:N with high availability impact only (no confidentiality or integrity impact), reflecting that exploitation requires the attacker to occupy the broker role rather than being an arbitrary remote peer; no confirmed active exploitation (CISA KEV) and no public exploit code were identified at time of analysis, and EPSS data was not provided. Note that the maxInflightQueue option does not mitigate this issue because it constrains only the outbound publish path.
RemediationAI
No exact fixed version is specified in the available input, so the first action is to consult the upstream advisory GHSA-46xj-5735-6qrp (https://github.com/vert-x3/vertx-mqtt/security/advisories/GHSA-46xj-5735-6qrp) and the Eclipse security work item https://gitlab.eclipse.org/security/cve-assignment/-/work_items/344 to identify the release that introduces an inbound bound, then upgrade io.vertx:vertx-mqtt out of the affected ranges (4.0.0-4.5.34, 5.0.0-5.0.12, 5.1.0-5.1.9, 5.2.0) as soon as a patched build is published. Because exploitation requires the attacker to hold the broker role, the highest-value compensating control is to connect only to MQTT brokers that are operator-controlled and mutually authenticated (client certificates or broker-side ACLs plus TLS), which removes the untrusted-broker precondition entirely at the cost of not supporting third-party or federated brokers. Where untrusted brokers cannot be avoided, stop subscribing with QoS 2 and use QoS 0 or QoS 1 for inbound traffic - this eliminates the qos2inbound retention path but sacrifices exactly-once delivery semantics and may cause duplicate or lost messages, so verify application idempotency first; note that tuning maxInflightQueue does NOT help because it only affects the outbound publish path. Additionally, cap the JVM heap (for example via -Xmx or container memory limits) so exhaustion triggers a fast, contained restart rather than host-level pressure, and monitor heap usage and QoS 2 handshake completion rates to detect brokers that withhold PUBREL. In all configurations, avoid running the MQTT-consuming Vert.x process in the same heap or container as availability-critical workloads.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
MQTT QoS 2 implements exactly-once delivery through a four-packet handshake: the sender emits PUBLISH, the receiver replies PUBREC, the sender replies PUBREL, and the receiver completes with PUBCOMP. In the Eclipse Vert.x MQTT implementation (the io.vertx:vertx-mqtt module, identified by CPE cpe:2.3:a:eclipse_foundation:eclipse_vert.x), the MqttClient stores each inbound QoS 2 PUBLISH message - including topic, payload, and metadata - in an internal map named qos2inbound while it waits for the corresponding PUBREL, so that the message can be dispatched to the application only once the handshake completes. That map is allocated without a size cap, and the client's maxInflightQueue setting is applied solely to the outbound publish path, leaving inbound retention unbounded. The root cause falls into the resource-exhaustion class (unbounded allocation / allocation of resources without limits or throttling, CWE-770 family; the input records CWE as N/A), meaning a peer that controls the number of half-completed QoS 2 handshakes controls the client's heap consumption. Vert.x is a JVM-based toolkit, so the failure mode is Java heap pressure leading to degraded message processing, aggressive garbage collection, and ultimately OutOfMemoryError termination of the hosting process; recovery requires restart, and other workloads sharing the JVM or container are affected.
Know when Eclipse Vert X gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Network-reachable but requires a malicious/compromised broker (AC:H); client needs no privileges (PR:N); impact is availability-only heap exhaustion (A:H, C:N, I:N).
Primary rating from Vendor (eclipse).
CVSS VectorVendor: eclipse
DescriptionCVE.org
In Eclipse Vert.x versions [4.0.0, 4.5.34] or [5.0.0,5.0.12] or [5.1.0,5.1.9] or [5.2.0, 5.2.0], the Eclipse Vert.x MQTT (vertx-mqtt) MqttClient stores every inbound QoS 2 PUBLISH message received from the broker in an internal map (qos2inbound) while awaiting the corresponding PUBREL packet to complete the QoS 2 handshake. This map has no size limit; the maxInflightQueue option is enforced only on the outbound publish path and does not constrain inbound message retention.
A malicious or compromised MQTT broker can exploit this by sending QoS 2 PUBLISH messages with distinct packet identifiers and withholding the PUBREL responses. Each incomplete handshake causes the client to retain the full publish message (topic, payload, and metadata) indefinitely, leading to unbounded memory growth in the Vert.x process. This can degrade the MQTT-consuming application or cause out-of-memory termination.
The impacted component is io.vertx:vertx-mqtt.
Technical POC Analysis
Evidence base: advisory GHSA-46xj-5735-6qrp only.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Eclipse Vert.x MQTT client versions 4.0.0 through 4.5.34, 5.0.0 through 5.0.12, 5.1.0 through 5.1.9, and 5.2.0 are affected by an unauthenticated memory exhaustion denial-of-service (CVSS 8.2) when subscribing to QoS 2 topics, requiring the attacker to control the MQTT broker. This can lead to out-of-memory termination of Vert.x applications, causing service outages. No vendor patch is available, so organizations must adopt interim mitigations.
No vendor-released patch identified at time of analysis; interim mitigations include disabling QoS 2 subscriptions, restricting MQTT broker connections to trusted brokers, monitoring memory usage, and applying network segmentation.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
More in Eclipse Vert X
View allEclipse Vert.x DB2 Client versions 4.0.0 through 4.5.34, 5.0.0 through 5.0.12, 5.1.0 through 5.1.9, and 5.2.0 can deseri
Denial of service in Eclipse Vert.x JSON Schema validation (io.vertx:vertx-json-schema) allows a remote unauthenticated
Unauthenticated remote attackers can exhaust server memory in Eclipse Vert.x deployments that expose the io.vertx:vertx-
Denial of service in Eclipse Vert.x HTTP proxy (io.vertx:vertx-http-proxy) affects versions 5.0.0 through 5.0.12, 5.1.0
Denial-of-service in Eclipse Vert.x allows unauthenticated remote attackers to exhaust server memory by sending compress
Unbounded direct-memory allocation in Eclipse Vert.x's MySQL client (io.vertx:vertx-mysql-client) versions 4.0.0 through
An unbounded-memory denial of service in the Eclipse Vert.x PostgreSQL client (io.vertx:vertx-pg-client) allows a malici
Unbounded direct-memory allocation in Eclipse Vert.x's MSSQL client (io.vertx:vertx-mssql-client) lets a malicious, comp
Denial of service in Eclipse Vert.x's vertx-pg-client component allows an attacker controlling the PostgreSQL server or
Denial of service in the Vert.x MySQL client (io.vertx:vertx-mysql-client) lets an attacker who controls or intercepts t
Denial of service in the Eclipse Vert.x Redis client (io.vertx:vertx-redis-client) affects versions 4.0.0 through 4.5.34
Cross-domain cookie injection in Eclipse Vert.x Web Client (WebClientSession) lets any server a victim application conta
EUVD-2026-101936
GHSA-g3vx-j9rx-jfm5
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB