CVE-2026-85724
KrytyczneCVSS 9.6Streszczenie
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.
Ocena ryzyka
Atakujący może uzyskać nieautoryzowany dostęp do danych i operacji w innych dzierżawach, a także spowodować przerwy w działaniu brokera, co może prowadzić do naruszenia poufności i dostępności usług.
Rekomendacja
Zaleca się natychmiastową aktualizację Moquette do wersji 0.18.1 lub nowszej, która zawiera poprawkę.
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-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-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 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.

