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

Published Nov 9, 2026
·
Updated

usbhdeviceinit() in subsys/usb/host/usbhdevice.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 usbhdevicesetconfiguration() — the only place udev->cfgdesc is allocated. The device structure is zero-initialised by usbhdevicealloc(), so udev->cfgdesc remains NULL.

usbhdeviceconnect() treats the zero return as a successful enumeration and calls usbhclassprobedevice(), which starts its descriptor walk from udev->cfgdesc. usbhdescgetnextfunction() passes that NULL pointer to usbhdescisvalid(), 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 UHCEVTDEVCONNECTEDFS/HS event handler in subsys/usb/host/usbhcore.c, with no authentication and no user interaction beyond the physical attachment.

On targets where page zero is unmapped or CONFIGNULLPOINTEREXCEPTIONDETECTION 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->cfgdesc in usbhdescgetiface(). No attacker-controlled write was identified, so the impact is availability plus a bounded out-of-bounds read. Note that CONFIGUSBHOSTSTACK is marked experimental.

Affected Software

1 affected component
Zephyr Project Zephyr USB host stack

Event History

Nov 9, 2026
CVE Published
via MITRE·10:03 PM
Data Sourced
via MITRE·10:03 PM
DescriptionSeverityWeakness

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203