CVE-2026-95848
KrytyczneCVSS 9.3Streszczenie
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.
Ocena ryzyka
Broker może działać bez uwierzytelniania i autoryzacji, co pozwala nieautoryzowanym klientom na pełny dostęp do brokerów i przesyłanych wiadomości, co może prowadzić do naruszenia poufności i integralności danych.
Rekomendacja
Należy zaktualizować Moquette do wersji 0.18.1 lub nowszej oraz upewnić się, że konfiguracja klas uwierzytelniających i autoryzujących jest poprawna i wszystkie zależności są dostępne.
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-95845Wysokie
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.
- 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-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, when a configured authenticator or authorizator class cannot be loaded, Server.initializeAuthenticator and Server.initializeAuthorizatorPolicy treat the failure as though no custom class was configured and fall back to AcceptAllAuthenticator or PermitAllAuthorizatorPolicy. A misspelled class name, missing dependency, constructor failure, or classpath problem can therefore start the broker with authentication or authorization disabled even though the operator configured those controls. This issue is fixed in version 0.18.1.

