CVE-2026-61633
NiskieCVSS 2.0Streszczenie
Podatność w NanoMQ przed wersją 0.24.14 dotyczy funkcji nni_mqtt_msg_decode_unsubscribe() w kliencie MQTT. Nieobsłużony błąd odczytu podczas liczenia tematów w nieprawidłowym pakiecie UNSUBSCRIBE może zawiesić klienta MQTT 3.1.1, zużywając CPU i pamięć, a przy włączonym automatycznym ponownym połączeniu wielokrotnie blokować usługę.
Ocena ryzyka
Złośliwy serwer MQTT może doprowadzić do niedostępności klientów, co może zakłócić komunikację IoT i systemy korzystające z NanoMQ jako klienta.
Rekomendacja
Zaktualizuj NanoMQ do wersji 0.24.14 lub nowszej, która zawiera poprawkę. Do czasu aktualizacji monitoruj połączenia i ogranicz dostęp do zaufanych brokerów.
Inne podatności w NanoMQ
Zobacz wszystkie- CVE-2026-73863Wysokie
W brokerze MQTT NanoMQ w wersjach przed 0.24.14 funkcja nmq_subinfo_decode() ponownie używa długości zmiennej z zewnętrznego pola Properties Length podczas parsowania każdego identyfikatora subskrypcji. Zdalny klient może wysłać pakiet SUBSCRIBE z wielobajtową długością właściwości i powtórzonymi identyfikatorami subskrypcji, co powoduje odczyt poza buforem wiadomości na stercie. Podatność jest naprawiona w wersji 0.24.14.
- CVE-2025-59947Krytyczne
NanoMQ przed wersją 0.24.4 ma podatność na przepełnienie bufora, gdy pakiety PUBLISH wyzwalają zarówno subskrypcję współdzieloną, jak i zwykłą. Wersja 0.24.4 zawiera poprawkę.
- CVE-2026-44639Niskie
NanoMQ, broker MQTT, w wersjach przed 0.24.14 posiada dekoder właściwości MQTT v5, który przy dodawaniu każdej właściwości przechodzi całą listę powiązaną, co prowadzi do złożoności O(N²). Zdalny, nieuwierzytelniony klient może wysłać pakiet PUBLISH lub SUBSCRIBE z wieloma właściwościami użytkownika, powodując nadmierne zużycie CPU i zawieszenie brokera.
- CVE-2026-47276Średnie
W NanoMQ w wersjach 0.24.11 i wcześniejszych, dereferencja wskaźnika NULL w funkcji `properties_parse()` umożliwia uwierzytelnionemu atakującemu spowodowanie awarii brokera NanoMQ poprzez wysłanie żądania POST do `/api/v4/mqtt/publish` z `user_properties` jako tablicą JSON zamiast obiektu JSON. Awaria występuje, ponieważ `strlen()` jest wywoływane na wskaźniku `item->string` o wartości NULL podczas iteracji po elementach tablicy.
- CVE-2026-47275Niskie
W nanomq w wersjach 0.24.11 i wcześniejszych wykryto błąd dereferencji wskaźnika NULL w funkcji nni_mqttv5_msg_decode_connect. Złośliwy broker MQTT może wysłać pojedynczy pakiet, który powoduje awarię łączącego się klienta NanoMQ MQTTv5 (w tym w trybie bridge) poprzez SIGSEGV. Problem wynika z użycia zmiennej 'prop' zamiast 'will_prop' podczas iteracji po właściwościach CONNECT. Jeśli pakiet CONNECT nie ma właściwości na poziomie połączenia (prop == NULL), ale ma właściwości will (will_prop != NULL), dereferencja prop->next powoduje SIGSEGV.
- CVE-2026-35217Średnie
NanoMQ zawiera wadę semantyki protokołu w obsłudze MQTT v5 SUBSCRIBE. Jeśli wpis subskrypcji brakuje końcowego 1-bajtowego pola Subscription Options, broker może zaakceptować uszkodzony pakiet i zainstalować subskrypcję w wewnętrznym stanie brokera. W określonych warunkach ta sama wada parsera powoduje również odczyt 1 bajtu poza granicami sterty, wykrywany przez ASAN jako przepełnienie bufora sterty.
- CVE-2026-36590Wysokie
W bibliotece NanoMQ w wersji 0.24.9 wykryto podatność umożliwiającą atakującemu zdalne wywołanie odmowy usługi (DoS) poprzez funkcję nni_qos_db_set w komponencie broker_tcp.c.
- CVE-2026-45151Niskie
W NanoMQ MQTT Broker w wersji 0.24.8 i wcześniejszych, funkcja quic_stream_recv może wyłuskać pusty wskaźnik substream, gdy substream jest w stanie reopen. Kod kończy AIO z błędem, ale nie zwraca przed zamknięciem c->mtx, co może prowadzić do awarii lub innych problemów.
- CVE-2026-44640Średnie
NanoMQ MQTT Broker przed wersją 0.24.14 zawiera podatność polegającą na pomyleniu typów (type confusion) podczas zamykania połączenia dialer. Prowadzi to do nieprawidłowej interpretacji obiektu i może skutkować zawieszeniem lub awarią.
- CVE-2026-32134Średnie
Podatność w NanoMQ MQTT Broker w wersjach 0.24.10 i niższych, polegająca na dereferencji wskaźnika NULL podczas obsługi ruchu o wysokiej współbieżności przy ponownym łączeniu. Prowadzi do awarii brokera (DoS) bez uwierzytelniania. Problem został naprawiony w wersji 0.24.11.
Oryginalny opis (angielski, źródło NVD)
NanoMQ is an MQTT broker. Prior to 0.24.14, the NanoMQ client function nni_mqtt_msg_decode_unsubscribe() in nng/src/supplemental/mqtt/mqtt_codec.c does not handle a failed read_uint16() while counting topics in a malformed UNSUBSCRIBE packet. A zero-length topic followed by trailing data can leave buf.curpos unchanged while topic_count continues to increase, allowing a malicious MQTT broker to hang a connecting MQTT 3.1.1 client, consume CPU and memory, and repeatedly deny service when automatic reconnection is enabled. The broker-side nmq_unsubinfo_decode path is not affected. This issue is fixed in version 0.24.14.

