CVE-2026-95845
WysokieCVSS 8.7Streszczenie
Moquette to lekki broker MQTT w Javie. Przed wersją 0.18.1 broker nie egzekwuje maksymalnej długości oczekujących kolejek wiadomości dla sesji. Gdy szybki wydawca wysyła wiadomości do wolnego subskrybenta, którego okno przesyłania jest pełne, wiadomości w kolejce mogą gromadzić się bez ograniczeń w pamięci lub trwałym magazynie. Zdalni klienci mogą wykorzystać ten stan do wyczerpania zasobów brokera i spowodowania odmowy usługi. Problem został naprawiony w wersji 0.18.1.
Ocena ryzyka
Ryzyko polega na możliwości wyczerpania zasobów brokera, co prowadzi do niedostępności usługi dla wszystkich klientów.
Rekomendacja
Zaleca się aktualizację Moquette do wersji 0.18.1 lub nowszej oraz skonfigurowanie limitów kolejek, jeśli to możliwe.
Inne podatności w Moquette
Zobacz wszystkie- CVE-2026-95847Wysokie
Moquette to lekki broker MQTT w Javie. Przed wersją 0.18.1, H2PersistentQueue wyprowadza nazwę mapy wiadomości sesji jako queue_ plus identyfikator klienta, a nazwę mapy metadanych jako queue_ plus identyfikator klienta plus _meta. Trwała sesja, której identyfikator klienta kończy się na _meta, może spowodować kolizję swojej mapy wiadomości z mapą metadanych innego klienta. Kolidujące sesje odczytują i zapisują tę samą mapę H2 MVStore z niekompatybilnymi typami wartości, co może uszkodzić dane głowy i ogona kolejki oraz spowodować utratę wiadomości, błędne dostarczenie, nieudane przeładowania kolejki lub ujawnienie treści kolejki między sesjami. Problem został naprawiony w wersji 0.18.1.
- CVE-2026-95846Wysokie
Moquette to lekki broker MQTT w Javie. Przed wersją 0.18.1, funkcja PostOffice.publishWill publikuje wiadomość Last-Will klienta bez stosowania kontroli autoryzacji canWrite i sprawdzania zastrzeżonych tematów, które są używane przy normalnym PUBLISH. Klient może skonfigurować Will dla tematu, do którego nie ma uprawnień zapisu, i spowodować, że broker opublikuje nieautoryzowaną wiadomość po nieoczekiwanym rozłączeniu klienta. Problem umożliwia nieautoryzowane wstrzykiwanie wiadomości do zastrzeżonych tematów. Problem został naprawiony w wersji 0.18.1.
- CVE-2026-95844Wysokie
Moquette to lekki broker MQTT w Javie. Przed wersją 0.18.1 Moquette nie ogranicza głębokości nazw tematów i filtrów tematów przed przetworzeniem ich przez rekurencyjne operacje wstawiania i dopasowywania w strukturze CTrie. Zdalny klient może opublikować lub zasubskrybować głęboko zagnieżdżony temat, powodując StackOverflowError, który zakłóca przetwarzanie sesji i może odmówić usługi klientom brokera. Problem został naprawiony w wersji 0.18.1.
- CVE-2026-95843Wysokie
Moquette to lekki broker MQTT w Javie. Przed wersją 0.18.1, funkcja PostOffice.subscribe parsuje filtr współdzielonej subskrypcji przez SharedSubscriptionUtils.extractShareName przed walidacją pełnej struktury $share/{shareName}/{topicFilter}. Zdalny klient może wysłać filtr taki jak $share/grp bez części topic-filter, powodując StringIndexOutOfBoundsException podczas obliczania nazwy udziału. Wyjątek kończy obsługę poleceń w pętli zdarzeń współdzielonej sesji i może odmówić usługi innym sesjom klientów przypisanym do tej pętli. Problem został naprawiony w wersji 0.18.1.
- CVE-2026-95842Wysokie
Moquette to lekki broker MQTT w Javie. Przed wersją 0.18.1, SessionEventLoop.run łapie tylko InterruptedException, a SessionEventLoopGroup nie restartuje zakończonej pętli. Polecenie MQTT, które wywołuje nieprzechwycony wyjątek, może zakończyć pętlę zdarzeń współdzieloną przez wiele sesji klientów, uniemożliwiając każdemu współlokalizowanemu klientowi przetwarzanie PUBLISH, SUBSCRIBE, PUBACK i innych poleceń. Atakujący może wybrać identyfikatory klientów mapowane na dostępne pętle, aby zakłócić przetwarzanie sesji dla całego brokera. Problem został naprawiony w wersji 0.18.1.
- CVE-2026-95848Krytyczne
Moquette to lekki broker MQTT napisany w Javie. Przed wersją 0.18.1, gdy skonfigurowana klasa uwierzytelniająca lub autoryzująca nie może zostać załadowana, Server.initializeAuthenticator i Server.initializeAuthorizatorPolicy traktują błąd tak, jakby nie skonfigurowano żadnej klasy niestandardowej i wracają do AcceptAllAuthenticator lub PermitAllAuthorizatorPolicy. Błędnie napisana nazwa klasy, brakująca zależność, błąd konstruktora lub problem ze ścieżką klas może zatem uruchomić brokera z wyłączonym uwierzytelnianiem lub autoryzacją, nawet jeśli operator skonfigurował te zabezpieczenia. Problem został naprawiony w wersji 0.18.1.
- CVE-2026-85724Krytyczne
Moquette to lekki broker MQTT w Javie. Przed wersją 0.18.1, gdy skonfigurowano reguły ACL oparte na wzorcach, AuthorizationsCollector.canDoOperation podstawia identyfikator klienta i nazwę użytkownika bezpośrednio do reguł zawierających %c lub %u, a następnie traktuje wynik jako filtr tematu MQTT. Klient używający + lub # w którejkolwiek z tych wartości może rozszerzyć podstawiony filtr i uzyskać dostęp do odczytu i zapisu między dzierżawami. Tożsamość z # może również wygenerować nieprawidłowy filtr, który powoduje wyjątek NullPointerException w Topic.match i zakłóca przetwarzanie sesji. Problem został naprawiony w wersji 0.18.1.
- CVE-2026-85058Wysokie
Moquette to lekki broker MQTT w Javie. W wersjach przed 0.18.1 metoda PostOffice.publishWill publikuje kontrolowaną przez klienta wiadomość Last Will bez wywołania sprawdzenia authorizator.canWrite używanego w normalnych ścieżkach PUBLISH, co pozwala na wstrzyknięcie wiadomości do tematu chronionego przez ACL.
Oryginalny opis (angielski, źródło NVD)
Moquette is a lightweight Java MQTT broker. Prior to 0.18.1, the broker does not enforce a maximum length for pending per-session message queues. When a fast publisher sends messages to a slow subscriber whose in-flight window is full, queued messages can accumulate without bound in memory or persistent storage. Remote clients can use this condition to exhaust broker resources and cause a denial of service. This issue is fixed in version 0.18.1.

