CVE-2026-44639
NiskieCVSS 3.7Streszczenie
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.
Ocena ryzyka
Atakujący może zdalnie i bez uwierzytelnienia wywołać atak typu denial of service, czyniąc brokera MQTT niedostępnym dla legalnych klientów. Powtarzane pakiety mogą podtrzymać stan niedostępności, zakłócając komunikację IoT.
Rekomendacja
Zaktualizuj NanoMQ do wersji 0.24.14 lub nowszej, która naprawia tę podatność. Jeśli aktualizacja nie jest możliwa, rozważ ograniczenie dostępu do brokera z niezaufanych sieci.
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-61633Niskie
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ę.
- 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, NanoMQ's MQTT v5 property decoder in nng/src/supplemental/mqtt/mqtt_codec.c uses property_append() to walk the entire linked list for each property added by decode_buf_properties(). A remote unauthenticated client can supply a PUBLISH or SUBSCRIBE packet containing many User Properties, causing O(N²) linked-list insertion and CPU work that makes the broker unresponsive; repeated packets can sustain the denial of service. This issue is fixed in version 0.24.14.

