# CVE-2026-95847: Moquette H2PersistentQueue client ID collision in durable sessions

Source: https://junglewise.ai/threats/cve-2026-95847-moquette-is-a-lightweight-java-mqtt-broker-prior-to-0-18-1  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-09-23. Updated: 2026-09-26  
License: CC BY 4.0 with a link back

CVE-2026-95847 · Severity: info · Published 2026-09-23

Moquette is a lightweight Java MQTT message broker used to route and queue messages for IoT and messaging applications. A flaw in how it names internal storage maps allows an attacker to craft a client ID that collides with another client's metadata, causing message loss, misdelivery, or exposure of other clients' queued messages. This affects durable (persistent) sessions and requires only knowledge or guessing of another client's ID.

Technologies: [Moquette](https://junglewise.ai/threats/technologies/moquette). Vendors: [Moquette](https://junglewise.ai/threats/vendors/moquette).

## Quick answers

**Is CVE-2026-95847 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2026-95847 being exploited in the wild.

**How severe is CVE-2026-95847?** Informational severity, published 23 September 2026.

**Which products and versions are affected?** Moquette before 0.18.1.

**Is there a fix for CVE-2026-95847?** A patch was published on 2026-07-19. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**How is CVE-2026-95847 attacked?** It is attacked over the network, in a software library.

**Am I affected by CVE-2026-95847?** Check whether you run Moquette at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

## Technical details

The H2PersistentQueue constructs message map and metadata map names by simple string concatenation using a shared "queue_" prefix, allowing a client ID ending in "_meta" to collide with another client's metadata map. Two sessions read/write the same MVStore map with incompatible value types (Long vs EnqueuedMessage), corrupting queue head/tail pointers. The fix namespaces metadata maps to "queuemeta_&lt;id&gt;" with automatic migration of existing queues, eliminating collision by construction.

## Affected products

- Moquette Moquette before 0.18.1

## Timeline

- 2026-09-23: disclosed
- 2026-07-19: patched

## References

- [https://github.com/moquette-io/moquette/commit/72d6c8257191d2e4b2e3aa11ab25fd09f88c6cb7](https://github.com/moquette-io/moquette/commit/72d6c8257191d2e4b2e3aa11ab25fd09f88c6cb7)
- [https://github.com/moquette-io/moquette/pull/964](https://github.com/moquette-io/moquette/pull/964)

## Related threats

- [Moquette Last-Will authorization bypass](https://junglewise.ai/threats/cve-2026-95846-moquette-is-a-lightweight-java-mqtt-broker-prior-to-0-18-1)
- [Moquette unbounded message queue denial of service](https://junglewise.ai/threats/cve-2026-95845-moquette-is-a-lightweight-java-mqtt-broker-prior-to-0-18-1-the)
- [Moquette MQTT broker stack overflow via deeply nested topics](https://junglewise.ai/threats/cve-2026-95844-moquette-is-a-lightweight-java-mqtt-broker-prior-to-0-18-1)
- [Moquette MQTT broker denial of service in shared subscription parsing](https://junglewise.ai/threats/cve-2026-95843-moquette-is-a-lightweight-java-mqtt-broker-prior-to-0-18-1)
- [Moquette MQTT broker event loop denial of service](https://junglewise.ai/threats/cve-2026-95842-moquette-is-a-lightweight-java-mqtt-broker-prior-to-0-18-1)
