CVE-2026-73863
WysokieCVSS 7.0Streszczenie
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.
Ocena ryzyka
Zdalny, nieuwierzytelniony klient może doprowadzić do awarii brokera MQTT, przerywając komunikację i usługi zależne od NanoMQ. Może to skutkować niedostępnością usługi i utratą przetwarzanych wiadomości.
Rekomendacja
Zaktualizuj NanoMQ do wersji 0.24.14 lub nowszej. Do czasu aktualizacji rozważ ograniczenie dostępu do brokera z niezaufanych sieci.
Inne podatności w NanoMQ
Zobacz wszystkie- 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-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, NanoMQ's broker-side MQTT v5 nmq_subinfo_decode() function in nng/src/sp/protocol/mqtt/mqtt_parser.c reuses len_of_varint from the outer Properties Length while parsing each SUBSCRIPTION_IDENTIFIER. A remote client can send a SUBSCRIBE packet with a multi-byte Properties Length and repeated subscription identifiers, causing get_var_integer() to begin at an incorrect offset and read beyond the heap message buffer. The flaw is reachable through the broker receive path and can crash the broker, while the separately reported topic-option off-by-one occurs later and is not this vulnerability. This issue is fixed in version 0.24.14.

