Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessConnect anonymously to broker
-
DeliveryConfigure Will on restricted topic
-
ExploitAbruptly disconnect session
-
ExecutionBroker publishes Will bypassing ACL
-
ImpactUnauthorized message injected to subscribers
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that the broker enforces topic write authorization (an IAuthorizatorPolicy/ACL is configured to restrict PUBLISH to certain topics) - the bug only matters where such an ACL boundary exists to be bypassed; on a fully permissive broker there is nothing to escape. The attacker must (1) be able to connect (trivial: Moquette accepts anonymous clients by default), (2) set a Last-Will Testament targeting a restricted topic during CONNECT, and (3) trigger an unexpected/abrupt disconnect (attacker-controlled, e.g. dropping the TCP socket). No authentication, user interaction, or non-default configuration beyond having ACLs enabled is required. The limiting factor is purely that the injected message goes only to subscribers of the chosen restricted topic - impact scales with how security-sensitive those topics are (e.g. device command/control channels). |
| Impact | The vendor CVSS 4.0 score of 8.7 (AV:N/AC:L/AT:N/PR:N/UI:N with VI:H, all other impacts N) frames this as a network-reachable, unauthenticated, integrity-only flaw - consistent with the description: a Last-Will message is published via PostOffice.publishWill without the canWrite/reserved-topic checks applied to a normal PUBLISH, so a client can inject messages into topics it is not authorized to write. Because Moquette accepts anonymous clients by default and the attacker fully controls the disconnect that triggers the Will, PR:N and AC:L are defensible; the abuse channel is trivially reachable. There is no confidentiality or availability impact (VC:N/VA:N), so this is a targeted integrity/authorization-bypass issue rather than a full compromise - CWE-862 (missing authorization), NOT authentication bypass or RCE (the source-code advisory explicitly disclaims RCE on this memory-safe JVM). No EPSS score, no CISA KEV listing, and no independent evidence of active exploitation are present in the input, so real-world exploitation pressure is unquantified; however, a source-only proof-of-concept (the WillUnauthorizedPublishTest regression test and advisory PoCs) demonstrates the flaw concretely. Net: a real, credible authorization-bypass bug worth patching, but its practical impact hinges on whether the deployment relies on topic ACLs to enforce a security boundary - where it does (multi-tenant/IoT command topics), integrity risk is genuine; where ACLs are cosmetic, impact is limited. |
| Exploit ScenarioDerived | An attacker connects to a Moquette broker (anonymous by default) and sets a Last-Will topic pointing at a restricted topic it has no write permission for - e.g. a control/command topic subscribed to by IoT actuators or other tenants. The attacker then abruptly drops the connection, causing the broker to publish the crafted Will payload to that protected topic, bypassing the ACL. A source-only proof-of-concept regression test (WillUnauthorizedPublishTest, per GHSA-9jjc-fw8x-fmwx) confirms the behavior; exploitation is remote and requires no authentication or user interaction. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 23, 2026
Unauthorized message injection in the Moquette lightweight Java MQTT broker affects all releases prior to 0.18.1: PostOffice.publishWill publishes a client's Last-Will Testament without running the canWrite authorization and reserved-topic checks that gate a normal PUBLISH, so remote unauthenticated attackers (CVSS vector PR:N) can register a Will on a topic they are not allowed to write and have the broker deliver that message to subscribers when the connection is abruptly dropped. This is an integrity-only flaw (C:N/I:H/A:N) whose real-world severity depends on how sensitive the restricted topic is - for example device command-and-control channels - and exploitation requires that an ACL or IAuthorizatorPolicy actually restricts writes to the targeted topic; vendors score it 8.7 (CVSS 4.0). Publicly available exploit code exists (the upstream advisory ships source-level PoCs, including a wildcard-ACL injection proof), but there is no indication in the supplied data of confirmed active exploitation (CISA KEV), and no patch is available other than upgrading to vendor-released version 0.18.1.
RemediationAI
Vendor-released patch: upgrade to Moquette 0.18.1 (release tag https://github.com/moquette-io/moquette/releases/tag/v0.18.1, artifact io.moquette:moquette-broker 0.18.1), which applies the missing canWrite gate in PostOffice.publishWill via commit f5a323fe782d1505c0097498cb22eb6ec6c96973 and also addresses the bundled DoS, pattern-ACL wildcard-injection and durable-corruption issues fixed by PRs #957, #958 and #963 (see the advisory https://github.com/moquette-io/moquette/security/advisories/GHSA-5f42-97gr-vfhq); upgrading is strongly preferred over partial mitigations because the same audit found the affected code paths reachable pre-authentication. If an immediate upgrade is impossible, note that the flaw only has effect when an authorizator restricts writes, so the most practical compensating control is to stop untrusted clients from connecting at all and thereby registering Wills: require real authentication instead of Moquette's anonymous-by-default AcceptAllAuthenticator and restrict broker reachability to trusted networks, with the trade-off that Moquette's default fail-open authenticator loading means a misconfigured or unloadable authenticator class silently reverts to PermitAll. A second option is to enforce the write boundary outside the broker - an MQTT-aware gateway or L7 proxy that rejects CONNECT packets whose Will topic falls outside the client's permitted topic space - which costs an extra hop and adds a new stateful component to operate. Third, if last-will functionality is not needed in a deployment, standardize clients and gateways on omitting the Will flag in CONNECT (a client-side policy that cannot be enforced by the broker itself, so it only helps for controlled device fleets) and, where restricted topics carry command/control traffic, deny subscriptions to those topics for all but privileged clients and alert on any publish to them, accepting that this narrows the blast radius rather than removing the bypass. Finally, since exploit code for the related issues is public, review logs for Wills published on restricted topics around unexpected disconnects and treat any such message as an integrity compromise of that topic.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in maven, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Moquette is a lightweight MQTT broker written in Java, embedding Netty and an H2-backed durable store (Maven artifact io.moquette:moquette-broker, CPE cpe:2.3:a:moquette-io:moquette:*:*:*:*:*:*:*:* covering every version up to and including 0.18.0, as the CPE has no version bound and the advisory states 'vulnerable: <= 0.18.0'). The defect is CWE-862 (Missing Authorization): in MQTT, a client may attach a Last Will and Testament (LWT) to its CONNECT packet - a topic and payload the broker is obliged to publish if the client disconnects abnormally. Moquette's normal publish path validates the sender with the configured IAuthorizatorPolicy.canWrite and applies reserved-topic (e.g. $-prefixed) protection, but the Will path in PostOffice.publishWill bypassed those checks entirely. The fix commit f5a323fe782d1505c0097498cb22eb6ec6c96973 inserts an explicit authorizator.canWrite(Topic.asTopic(will.topic), "", WILL_PUBLISHER) gate before the Will is published and returns early with an error log when the topic is not writable. The same upstream advisory bundles several related broker weaknesses from the same audit - pattern-ACL wildcard injection via unvalidated clientId/username substituted into '%c'/'%u' rules (cross-tenant read and write), an unhandled exception wedging the shared SessionEventLoop (malformed $share/ SUBSCRIBE, deeply nested topics, ACL NPE → remote denial of service), cross-session durable corruption when a clientId collides with an H2 queue name, and fail-open authenticator/authorizator class loading - which contextualizes why the 0.18.1 release note lists multiple fixes alongside the Last-Will writability check. Note that only the Last-Will authorization bypass is the subject of this CVE.
Know when Moquette 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:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
Remote, anonymous-by-default access and attacker-controlled disconnect give AV:N/AC:L/PR:N/UI:N; impact is unauthorized message injection into restricted topics, integrity-only (I:H), with no confidentiality or availability effect.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Moquette is a lightweight Java MQTT broker. Prior to 0.18.1, PostOffice.publishWill publishes a client's Last-Will message without applying the canWrite authorization and reserved-topic checks used for a normal PUBLISH. A client can configure a Will for a topic that the client is not permitted to write and cause the broker to publish the unauthorized message when the client disconnects unexpectedly. This issue allows unauthorized message injection into restricted topics. This issue is fixed in version 0.18.1.
Technical POC Analysis
CWE-862 (Missing Authorization) in PostOffice.publishWill (module broker/, package io.moquette), audited at commit da7f719a6bab9829d520b5838e13ea7b1f9be3ef.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A high-severity authorization flaw in the Moquette lightweight Java MQTT broker (all releases prior to 0.18.1) allows an unauthenticated remote party to register a Last-Will message on a topic it is not permitted to write, and the broker then delivers that forged message to subscribers when the connection drops. Because MQTT brokers commonly carry device command-and-control traffic, affected organizations face forged instructions reaching operational devices or IoT fleets, degrading the integrity of those channels - confidentiality and availability are not impacted, so leadership should weight the risk by how sensitive the restricted topics are. The concern is amplified because publicly available exploit code exists and the supplied metadata identifies no vendor-released patch, leaving configuration and network controls as the near-term mitigation.
No vendor-released patch identified at time of analysis. Interim mitigations: restrict broker network exposure to trusted client networks and require TLS with per-client authentication; eliminate wildcard or overly broad ACL write grants and confine each client's Will topic to its own namespace so unpermitted topics cannot be targeted; disable Last-Will registration entirely where the feature is not operationally required; segment the broker into its own network zone with least-privilege routing to device command channels; log, alert on, and rate-limit connection drops followed by Will deliveries on restricted topics; and validate any 0.18.1 (or later) release against the upstream advisory before treating it as the remediated version.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Moquette MQTT brokers running versions prior to 0.18.1 fail to enforce topic write ACLs on Last Will and Testament messa
Moquette MQTT brokers prior to 0.18.1 can start up with authentication and authorization silently disabled whenever a co
Durable MQTT sessions in Moquette 0.18.0 and earlier can corrupt each other's persisted queues when a client connects wi
Remote, pre-authentication denial of service in the Moquette MQTT broker (moquette-io moquette-broker) through 0.18.0 al
Denial of service in the Moquette lightweight Java MQTT broker prior to 0.18.1: a single remote, unauthenticated MQTT cl
Unbounded per-session message queuing in Moquette MQTT Broker before 0.18.1 permits remote unauthenticated clients to ex
Remote unauthenticated clients can crash a Moquette MQTT broker running 0.18.0 or earlier by publishing or subscribing w
EUVD-2026-85416
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB