CVE-2026-47275
NiskieCVSS 2.6Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 7 - wyżej niż 7% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Organizacja narażona jest na zdalną odmowę usługi (DoS) poprzez awarię klienta NanoMQ pojedynczym pakietem. W trybie bridge z automatycznym ponownym łączeniem może to prowadzić do nieskończonej pętli awarii.
Rekomendacja
Należy zaktualizować nanomq do wersji nowszej niż 0.24.11, która zawiera poprawkę usuwającą tę podatność.
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-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-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-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)
In nanomq versions 0.24.11 and earlier, a NULL pointer dereference in `nni_mqttv5_msg_decode_connect()` allows a malicious MQTT broker to crash any connecting NanoMQ MQTTv5 client (including bridge mode) with a single packet, causing remote denial of service via SIGSEGV. In `nni_mqttv5_msg_decode_connect()` (`mqtt_codec.c:1863`), the code iterates over CONNECT properties using variable `prop` when it should use `will_prop`. When a CONNECT packet has no connect-level properties (`prop == NULL`) but has will properties (`will_prop != NULL`), dereferencing `prop->next` causes SIGSEGV at address `0x38` (NULL + `offsetof(property, next)`). This affects both `nanomq_cli` and **NanoMQ bridge mode** (Core component), as both use the same `mqtt_client.c` receive path. This can lead to remote DoS if a malicious MQTT broker can crash the client process with a single 35-byte packet and persistent DoS if auto-reconnect causes infinite crash loop.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

