Katalog CVE

CVE-2026-75083

ŚrednieCVSS 5.9
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.23%

Percentyl 13 - wyżej niż 13% wszystkich znanych CVE

Streszczenie

Sterownik NXP KW41Z dla IEEE 802.15.4 (funkcja kw41z_rx() w drivers/ieee802154/ieee802154_kw41z.c) obliczał rozmiar ładunku jako pkt_len = len - KW41Z_FCS_LENGTH w zmiennej typu uint8_t. Ponieważ długość ramki pochodzi z niezabezpieczonego pola RX_FRAME_LENGTH rejestru ZLL IRQSTS i odrzucana była tylko wartość zero, długość równa jeden powodowała niedomiar do pkt_len == 255. Prowadziło to do zapisu 255 bajtów do 128-bajtowego bloku net_buf, przepełniając go o maksymalnie 127 bajtów w sąsiednią pamięć puli buforów sieciowych oraz odczytu poza tablicę rejestru PKT_BUFFER_RX.

Ocena ryzyka

Atakujący znajdujący się w zasięgu radiowym 802.15.4 może wysyłać ramki z bajtem długości równym jeden, wywołując uszkodzenie pamięci w współdzielonej puli buforów odbiorczych z kontekstu przerwania. Najbardziej prawdopodobnym skutkiem jest awaria systemu lub uszkodzenie danych innych pakietów; nadpisywane bajty pochodzą z rejestrów radiowych, a nie od atakującego, co ogranicza wpływ na integralność.

Rekomendacja

Zaktualizuj system do wersji zawierającej poprawkę, która odrzuca każdą długość mniejszą niż KW41Z_FCS_LENGTH oraz weryfikuje net_buf_tailroom() pierwszego fragmentu przed pętlami kopiującymi (obejmuje to również wariant CONFIG_NET_L2_OPENTHREAD). Do czasu wdrożenia poprawki rozważ ograniczenie ekspozycji urządzeń z tym sterownikiem na niezaufane transmisje radiowe 802.15.4.

Powiązane podatności

Oryginalny opis (angielski, źródło NVD)

The receive path of the NXP KW41Z IEEE 802.15.4 driver, kw41z_rx() in drivers/ieee802154/ieee802154_kw41z.c, computed the payload size as pkt_len = len - KW41Z_FCS_LENGTH in a uint8_t, where len is the frame length reported by the radio. The interrupt handler kw41z_isr() obtained that length from the RX_FRAME_LENGTH field of the ZLL IRQSTS register — a copy of the PHY header length byte of the frame received over the air — and only rejected the value zero. A reported length of one therefore underflowed to pkt_len == 255. Because the packet is allocated with NET_AF_UNSPEC on a non-Ethernet L2, net_pkt_rx_alloc_with_buffer() does not clamp the request to the interface MTU; with the default fixed-size buffer pool (CONFIG_NET_BUF_FIXED_DATA_SIZE, CONFIG_NET_BUF_DATA_SIZE=128) the allocation succeeded as a chain of two fragments. The subsequent register-to-buffer copy loops write into the first fragment only, so 255 bytes were written into a 128-byte net_buf data block, overrunning it by up to 127 bytes into adjacent network-buffer-pool memory, and reading up to 128 bytes past the end of the radio's PKT_BUFFER_RX register array. The length field originates from an unauthenticated frame transmitted by any device within 802.15.4 radio range, and is captured by the hardware at PHY-header time — before frame filtering has completed — while the handler samples it after clearing the interrupt status, so an attacker flooding frames with a length byte of one can drive the underflow. The impact is memory corruption in the shared receive buffer pool from interrupt context, most plausibly a crash or corruption of other packets' data; the overflowing bytes are radio register contents rather than attacker-authored data, which bounds the integrity impact. The fix rejects any length below KW41Z_FCS_LENGTH and additionally verifies net_buf_tailroom() of the first fragment before the copy loops, which also covers the CONFIG_NET_L2_OPENTHREAD variant of the size computation.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS