Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2026-90591— NXP ENET-QOS Ethernet driver re-arms RX descriptors with a clobbered DMA buffer address on packet drop

Quick assessment

Affected
zephyrproject zephyr
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

NXP ENET-QOS 以太网驱动程序中的接收工作处理函数 (位于 )在将每个已处理的描述符交还给 DMA 时,会执行 操作,该操作会设置 和 。接收描述符的 RDES0 字段在读取模式下表示 DMA 缓冲区地址,但硬件在写回时会将该字与 VLAN 标签字段(对于上下文描述符,则是时间戳的低字)进行别名映射,导致该字段在每次完成时被覆盖破坏。在正常处理路径中,驱动程序会在重新武装(re-arm)之前重写 ;然而,在四种丢包路径中(包括:出现错误的描述符、非首个描述符、 分配失败、以及无效描述符长度或 分配失败),

CVSS 7.5 · High
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2026-90591

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
NXP ENET-QOS Ethernet driver re-arms RX descriptors with a clobbered DMA buffer address on packet drop
Source: CVE Program / CVE List V5
Vulnerability Description
The NXP ENET-QOS Ethernet driver's receive work handler eth_nxp_enet_qos_rx() in drivers/ethernet/eth_nxp_enet_qos hands each processed descriptor back to the DMA by writing desc->read.control = rx_desc_refresh_flags, which sets OWN_FLAG and BUF1_ADDR_VALID_FLAG. RDES0 of a receive descriptor is the DMA buffer address in read format, but the hardware write-back aliases that word with the VLAN tag fields (or, for a context descriptor, the timestamp low word), so it is destroyed on every completion. The success path rewrites desc->read.buf1_addr before re-arming; the four drop paths — errored or non-first descriptor, net_pkt_rx_alloc() failure, invalid descriptor length, and net_pkt_get_frag() failure — did not, re-arming the ring slot with the write-back residue as its DMA target address. The drop paths are driven entirely by received traffic and need no privilege or special configuration. With the defaults for this driver (CONFIG_NET_BUF_DATA_SIZE of 128 and 16 receive descriptors) a single full-size frame consumes twelve ring slots and twelve K_NO_WAIT fragment allocations, so a short burst of frames sent to the device exhausts the receive pools and reaches the allocation-failure paths; a frame with a receive error, or any frame whose first descriptor was already dropped, reaches the non-first-descriptor path. Once a slot has been poisoned, the DMA writes the next frame received in that slot to an address derived from the frame's VLAN tag fields rather than to a receive buffer. On the supported MCX SoCs that address falls in flash or reserved space, so the transfer raises a fatal bus error that the driver only logs — there is no reset or recovery path — and reception stops permanently until the device is rebooted; where the write is silently discarded instead, the untouched buffer is later handed to the network stack with a length, delivering stale buffer contents as if they were a received frame. A single triggering event is enough to make the condition persistent, so an attacker able to send traffic to the device can permanently disable its network interface.
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Source: CVE Program / CVE List V5
Vulnerability Type
跨界内存写
Source: CVE Program / CVE List V5

Affected Products

Vendor Product Affected Versions CPE Subscribe
zephyrproject zephyr 4.2.0 ~ 4.3.2 -

II. Public POCs for CVE-2026-90591

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2026-90591

请登录查看更多情报信息。

Other References for CVE-2026-90591 (2)

Same Patch Batch · zephyrproject · 2026-11-09 · 7 CVEs total

CVE-2026-90586 7.8 HIGH Xtensa MMU userspace: uninitialized thread page-table pointer leads to out-of-bounds super
CVE-2026-90590 6.5 MEDIUM Permanent loss of transmit capability in the NXP ENET QoS Ethernet driver after an Etherne
CVE-2026-90589 5.5 MEDIUM Memory-mapped thread stack is never unmapped when a thread is aborted by another thread, e
CVE-2026-90587 4.6 MEDIUM NULL pointer dereference in the Zephyr USB host stack when a device reports zero configura
CVE-2026-90585 4.6 MEDIUM Renesas RA SCI UART driver: unacknowledged receive-error interrupt causes a permanent inte
CVE-2026-90588 3.7 LOW Out-of-bounds read in Zephyr HTTP client debug logging of response header fields

IV. Related Vulnerabilities