CVE-2026-95847: коллизия client ID в Moquette ломает durable-очереди H2
В MQTT-брокере Moquette до версии 0.18.1 из-за особенностей формирования имён карт в H2PersistentQueue клиент с идентификатором, оканчивающимся на _meta, может испортить durable-очередь другого клиента. Уязвимость оценена в 8.8 (HIGH) и приводит к потере сообщений, их доставке не тому получателю или утечке содержимого очередей между сессиями.
Подробности
Уязвимость затрагивает проект moquette-io moquette во всех версиях до 0.18.1. В компоненте H2PersistentQueue имя карты сообщений сессии формируется как queue_ плюс client ID, а имя карты метаданных — как queue_ плюс client ID плюс _meta. Из-за этого durable-сессия, чей client ID заканчивается на _meta, порождает имя карты сообщений, совпадающее с именем карты метаданных другого клиента. В результате две сессии начинают читать и записывать одну и ту же карту H2 MVStore, используя несовместимые типы значений. Это ведёт к повреждению данных о голове и хвосте очереди. Последствия для владельцев затронутых сессий включают потерю сообщений, доставку сообщений не тому получателю, сбои при перезагрузке очереди, а также раскрытие содержимого очереди одной сессии другой. Уязвимость получила оценку CVSS 8.8 (HIGH), что отражает высокую опасность как для целостности, так и для конфиденциальности обрабатываемых данных.Что делать
Разработчики выпустили исправление в версии 0.18.1. Основная рекомендация — как можно скорее обновить Moquette до 0.18.1 или более поздней версии. Если немедленное обновление невозможно, стоит рассмотреть временные меры. В частности, можно ограничить или проверить набор допустимых client ID на стороне брокера, исключив идентификаторы, оканчивающиеся на _meta, — это снижает вероятность возникновения коллизии имён карт. Также имеет смысл проверить состояние существующих durable-очередей и журналы брокера на предмет сбоев перезагрузки очередей, потери или подозрительной доставки сообщений, которые могли возникнуть до устранения уязвимости. Дополнительно рекомендуется проанализировать, не использовались ли в вашей инфраструктуре клиентские идентификаторы с суффиксом _meta, и при наличии таких сессий оценить возможный ущерб для целостности и конфиденциальности данных. Итог: CVE-2026-95847 — серьёзная уязвимость в Moquette, связанная с коллизией имён карт в H2PersistentQueue и способная привести к повреждению durable-очередей, потере и неверной доставке сообщений, а также к утечке данных между сессиями. Единственное надёжное решение — обновление до версии 0.18.1; до его применения оправданы описанные митигации и проверка состояния очередей.Источник: CVE Project (cvelistV5)
