Description
Moquette is a lightweight Java MQTT broker. Prior to 0.18.1, when pattern-based ACL rules are configured, AuthorizationsCollector.canDoOperation substitutes client ID and username values directly into rules containing %c or %u and then treats the result as an MQTT topic filter. A client that uses + or # in either identity can broaden the substituted filter and gain cross-tenant read and write access. A # identity can also produce an invalid filter that triggers a NullPointerException in Topic.match and disrupts session processing. This issue is fixed in version 0.18.1.
Published: 2026-09-23
Score: 9.6 Critical
EPSS: n/a
KEV: No
Impact: Authorization bypass
Action: Immediate Patch
AI Analysis

Impact

Moquette versions before 0.18.1 incorrectly substitute %c and %u placeholders in ACL pattern rules with client IDs and usernames that may contain MQTT wildcard characters. When a client uses the + or # wildcard in its identity, the substituted ACL filter can become overly permissive, allowing that client to read or write topics belonging to other tenants. In addition, a client using a # identity can generate an invalid ACL filter that triggers a NullPointerException, disrupting session handling for all clients. The CWE-155 and CWE-863 classes indicate flaws in authorization logic and potential permission escalation. The impact is a cross‑tenant authorization bypass accompanied by possible denial of service.

Affected Systems

The vulnerable component is the Moquette MQTT broker, any installation of moquette-io:moquette with a version earlier than 0.18.1. Users deploying the broker for multi‑tenant MQTT services are at risk unless the broker is patched or properly configured.

Risk and Exploitability

With a CVSS score of 9.6 this vulnerability represents critical severity. The EPSS score is currently not available, which does not diminish its potential for exploitation; attackers can initiate a connection from any remote MQTT client bearing a crafted identity containing wildcards to obtain broad read/write access or to trigger service interruption. The vulnerability is listed as not in the CISA Known Exploited Vulnerabilities catalog, but the combination of a very high severity score and the ease of triggering the flaw through normal client authentication makes it highly exploitable in practice.

Generated by OpenCVE AI on September 23, 2026 at 17:24 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Moquette broker to version 0.18.1 or later to obtain the fix that sanitizes ACL placeholder substitution.
  • If an upgrade cannot be performed immediately, configure the broker to disallow ACL pattern rules that reference %c or %u when the client identity may contain MQTT wildcards, and enforce stricter validation on client IDs and usernames to reject + or # characters.
  • Apply an additional runtime check on ACL evaluation to prevent substitution that results in topic filters containing wildcards or causing errors in topic matching, thereby mitigating both authorization bypass and denial of service.

Generated by OpenCVE AI on September 23, 2026 at 17:24 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-5f42-97gr-vfhq Moquette: Pattern-ACL wildcard injection (cross-tenant authorization bypass) plus a remote-unauthenticated DoS cluster, a Will-message authorization bypass, and a cross-session durable-corruption bug
History

Wed, 23 Sep 2026 16:45:00 +0000

Type Values Removed Values Added
Description Moquette is a lightweight Java MQTT broker. Prior to 0.18.1, when pattern-based ACL rules are configured, AuthorizationsCollector.canDoOperation substitutes client ID and username values directly into rules containing %c or %u and then treats the result as an MQTT topic filter. A client that uses + or # in either identity can broaden the substituted filter and gain cross-tenant read and write access. A # identity can also produce an invalid filter that triggers a NullPointerException in Topic.match and disrupts session processing. This issue is fixed in version 0.18.1.
Title Moquette pattern ACL wildcard injection allows cross-tenant authorization bypass
Weaknesses CWE-155
CWE-863
References
Metrics cvssV3_1

{'score': 9.6, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-23T16:29:36.296Z

Reserved: 2026-09-04T14:45:10.648Z

Link: CVE-2026-85724

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-23T17:17:17.623

Modified: 2026-09-23T17:17:17.623

Link: CVE-2026-85724

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-23T17:30:06Z

Weaknesses
  • CWE-155

    Improper Neutralization of Wildcards or Matching Symbols

  • CWE-863

    Incorrect Authorization