{"id":"CVE-2026-85724","summary":"Moquette pattern ACL wildcard injection allows cross-tenant authorization bypass","details":"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.","aliases":["CVE-2026-95842","CVE-2026-95843","CVE-2026-95844","CVE-2026-95845","CVE-2026-95846","CVE-2026-95847","CVE-2026-95848","GHSA-5f42-97gr-vfhq"],"modified":"2026-09-27T08:01:30.690236Z","published":"2026-09-23T16:29:36.296Z","database_specific":{"cna_assigner":"GitHub_M","cwe_ids":["CWE-155","CWE-863"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/85xxx/CVE-2026-85724.json"},"references":[{"type":"WEB","url":"https://github.com/moquette-io/moquette/releases/tag/v0.18.1"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/85xxx/CVE-2026-85724.json"},{"type":"ADVISORY","url":"https://github.com/moquette-io/moquette/security/advisories/GHSA-5f42-97gr-vfhq"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-85724"},{"type":"FIX","url":"https://github.com/moquette-io/moquette/commit/b4a98bb3f3425ece476ed073aa080c627c1239af"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/moquette-io/moquette","events":[{"introduced":"0"},{"fixed":"e8ce83336acce69d8e9c11c98805217aa156a16b"},{"fixed":"b4a98bb3f3425ece476ed073aa080c627c1239af"}],"database_specific":{"cpe":"cpe:2.3:a:moquette:moquette:*:*:*:*:*:*:*:*","extracted_events":[{"introduced":"0"},{"fixed":"0.18.1"}],"source":["CPE_RANGE","REFERENCES"]}}],"versions":["v0.18.0","0.18.0","last_gradle","v0.12.1","v0.12","v0.11","second_try_with_osgi_giveup","last_with_maven","v0.10","before_sofia2","v0.9","v0.8","last_with_ringbuffer","0.7","last_osgi"],"database_specific":{"source":"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2026-85724.json","vanir_signatures_modified":"2026-09-27T08:01:30Z","vanir_signatures":[{"source":"https://github.com/moquette-io/moquette/commit/b4a98bb3f3425ece476ed073aa080c627c1239af","target":{"file":"broker/src/main/java/io/moquette/broker/security/AuthorizationsCollector.java","function":"canDoOperation"},"deprecated":false,"digest":{"function_hash":"269180878684028958057482685079324653907","length":665},"id":"CVE-2026-85724-2617fa0f","signature_type":"Function","signature_version":"v1"},{"signature_version":"v1","source":"https://github.com/moquette-io/moquette/commit/b4a98bb3f3425ece476ed073aa080c627c1239af","target":{"file":"broker/src/main/java/io/moquette/broker/security/AuthorizationsCollector.java"},"deprecated":false,"digest":{"threshold":0.9,"line_hashes":["146723529666818269005525026885854492949","78740541475288257772251903445712881844","58497300178204072490764963317319399709","80926390165758371002872336894721456795","250073199230157587689868727767617437011","121110560608509694834736544497174883831","147789047307011195578423652881166664603","76146791607541996755890788610387322561","151995414082502180367401151876526258620","314969683416092103583416804682353801633","80383474661021697751492471343546808612","17623425134024995364258901604421458770","193262608935336785088001289137364822697","223806271234802523021061016499458327744","211471839537277107047721905629066937899","50315392668686842175158022192326523453","106587876177938024023046406589839938123"]},"id":"CVE-2026-85724-68afd567","signature_type":"Line"},{"target":{"file":"broker/src/main/java/io/moquette/broker/Server.java"},"deprecated":false,"digest":{"line_hashes":["264460424198365981025294149882277014898","11410191927348774178838709852851310256","273802157253247414129958982189405529275","315296026132642631038163665576809441438"],"threshold":0.9},"id":"CVE-2026-85724-dd85d397","signature_type":"Line","signature_version":"v1","source":"https://github.com/moquette-io/moquette/commit/e8ce83336acce69d8e9c11c98805217aa156a16b"},{"digest":{"line_hashes":["328374551104237904931968267836206710181","210219106386364814821012441869475736087"],"threshold":0.9},"id":"CVE-2026-85724-dfbb4853","signature_type":"Line","signature_version":"v1","source":"https://github.com/moquette-io/moquette/commit/b4a98bb3f3425ece476ed073aa080c627c1239af","target":{"file":"broker/src/test/java/io/moquette/broker/security/AuthorizationsCollectorTest.java"},"deprecated":false}]}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N"}]}