CVE-2026-85058
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 20 - wyżej niż 20% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Zdalny klient może obejść uprawnienia ACL i wstrzyknąć kontrolowane przez atakującego wiadomości do chronionych tematów, co może prowadzić do fałszowania danych lub zakłócenia działania systemu.
Rekomendacja
Zaktualizuj Moquette do wersji 0.18.1 lub nowszej. Rozważ wyłączenie dostępu anonimowego, jeśli nie jest wymagany.
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-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.
Oryginalny opis (angielski, źródło NVD)
Moquette is a lightweight Java MQTT broker. Prior to 0.18.1, PostOffice.publishWill publishes a client-controlled Last Will message through publish2Subscribers without invoking the authorizator.canWrite check used by normal PUBLISH paths. When anonymous access is enabled and topic ACLs restrict writes, a remote client can set an ACL-protected topic as the Last Will Topic during CONNECT and perform an abnormal client disconnect, causing the broker to inject attacker-controlled messages into a topic for which the client lacks write permission. This issue is fixed in version 0.18.1.

