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

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2026-90587— NULL pointer dereference in the Zephyr USB host stack when a device reports zero configurations

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.

在 中的 函数会拒绝那些设备描述符中声明 的 USB 设备。然而,该函数仅记录错误日志并跳转至清理标签,却未设置返回码。此时,局部变量 仍保持为 0(源于此前成功读取描述符的操作),导致函数在跳过 (唯一分配 的位置)的情况下返回成功。由于 已将设备结构体零初始化, 保持为 NULL。 将零返回值视为枚举成功,并调用 。后者从 开始遍历描述符。 将该 NULL 指针传递给 ,而该函数的唯一防护仅检查调用方提供的长度参数,因此会通过 NULL 指针读取 。 该漏洞可完全由连接的外设触发:只需连接一个报告 的 USB

CVSS 4.6 · Medium
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2026-90587

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
NULL pointer dereference in the Zephyr USB host stack when a device reports zero configurations
Source: CVE Program / CVE List V5
Vulnerability Description
usbh_device_init() in subsys/usb/host/usbh_device.c rejects a device whose device descriptor advertises bNumConfigurations == 0, but it only logs the error and jumps to the cleanup label without setting the return code. At that point the local err is still 0 from the preceding successful descriptor read, so the function returns success while having skipped usbh_device_set_configuration() — the only place udev->cfg_desc is allocated. The device structure is zero-initialised by usbh_device_alloc(), so udev->cfg_desc remains NULL. usbh_device_connect() treats the zero return as a successful enumeration and calls usbh_class_probe_device(), which starts its descriptor walk from udev->cfg_desc. usbh_desc_get_next_function() passes that NULL pointer to usbh_desc_is_valid(), whose only guard compares the caller-supplied size, so head->bLength is read through a NULL pointer. The condition is triggered entirely by the attached peripheral: attaching a USB device (or any USB gadget emulating one) that reports bNumConfigurations = 0 reaches the defect directly from the UHC_EVT_DEV_CONNECTED_FS/_HS event handler in subsys/usb/host/usbh_core.c, with no authentication and no user interaction beyond the physical attachment. On targets where page zero is unmapped or CONFIG_NULL_POINTER_EXCEPTION_DETECTION is enabled this raises a fatal exception in the USB host thread, denying service to the host. Where address zero is readable, the descriptor walker instead parses low memory as a descriptor chain and can dispatch a class probe() with attacker-influenced values, causing further out-of-bounds reads through the still-NULL udev->cfg_desc in usbh_desc_get_iface(). No attacker-controlled write was identified, so the impact is availability plus a bounded out-of-bounds read. Note that CONFIG_USB_HOST_STACK is marked experimental.
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:P/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.4.0 ~ 4.5.0 -

II. Public POCs for CVE-2026-90587

# 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-90587

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

Other References for CVE-2026-90587 (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-90591 7.5 HIGH NXP ENET-QOS Ethernet driver re-arms RX descriptors with a clobbered DMA buffer address on
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-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