{"id":"UBUNTU-CVE-2026-90587","details":"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-\u003ecfg_desc is allocated. The device structure is zero-initialised by usbh_device_alloc(), so udev-\u003ecfg_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-\u003ecfg_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-\u003ebLength 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-\u003ecfg_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.","modified":"2026-11-11T09:41:41.400149590Z","published":"2026-11-10T00:00:00Z","upstream":["CVE-2026-90587"],"references":[{"type":"REPORT","url":"https://ubuntu.com/security/CVE-2026-90587"},{"type":"REPORT","url":"https://www.cve.org/CVERecord?id=CVE-2026-90587"},{"type":"REPORT","url":"github.com/zephyrproject-rtos/zephyr"}],"affected":[{"package":{"name":"zephyr","ecosystem":"Ubuntu:16.04:LTS","purl":"pkg:deb/ubuntu/zephyr?arch=source&distro=xenial"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.1.2-1","3.1.2-1build1"],"ecosystem_specific":{"binaries":[{"binary_version":"3.1.2-1build1","binary_name":"libzephyr4"},{"binary_version":"3.1.2-1build1","binary_name":"libzephyr4-krb5"},{"binary_version":"3.1.2-1build1","binary_name":"zephyr-clients"},{"binary_name":"zephyr-server","binary_version":"3.1.2-1build1"},{"binary_version":"3.1.2-1build1","binary_name":"zephyr-server-krb5"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-90587.json"}},{"package":{"name":"zephyr","ecosystem":"Ubuntu:18.04:LTS","purl":"pkg:deb/ubuntu/zephyr?arch=source&distro=bionic"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.1.2-1build1","3.1.2-1build2"],"ecosystem_specific":{"binaries":[{"binary_version":"3.1.2-1build2","binary_name":"libzephyr4"},{"binary_name":"libzephyr4-krb5","binary_version":"3.1.2-1build2"},{"binary_name":"zephyr-clients","binary_version":"3.1.2-1build2"},{"binary_name":"zephyr-server","binary_version":"3.1.2-1build2"},{"binary_version":"3.1.2-1build2","binary_name":"zephyr-server-krb5"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-90587.json"}},{"package":{"name":"zephyr","ecosystem":"Ubuntu:20.04:LTS","purl":"pkg:deb/ubuntu/zephyr?arch=source&distro=focal"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.1.2-1build3"],"ecosystem_specific":{"binaries":[{"binary_name":"libzephyr4","binary_version":"3.1.2-1build3"},{"binary_version":"3.1.2-1build3","binary_name":"libzephyr4-krb5"},{"binary_version":"3.1.2-1build3","binary_name":"zephyr-clients"},{"binary_version":"3.1.2-1build3","binary_name":"zephyr-server"},{"binary_name":"zephyr-server-krb5","binary_version":"3.1.2-1build3"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-90587.json"}},{"package":{"name":"zephyr","ecosystem":"Ubuntu:22.04:LTS","purl":"pkg:deb/ubuntu/zephyr?arch=source&distro=jammy"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.1.2-1build3"],"ecosystem_specific":{"binaries":[{"binary_name":"libzephyr4","binary_version":"3.1.2-1build3"},{"binary_name":"libzephyr4-krb5","binary_version":"3.1.2-1build3"},{"binary_name":"zephyr-clients","binary_version":"3.1.2-1build3"},{"binary_name":"zephyr-server","binary_version":"3.1.2-1build3"},{"binary_name":"zephyr-server-krb5","binary_version":"3.1.2-1build3"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-90587.json"}},{"package":{"name":"zephyr","ecosystem":"Ubuntu:24.04:LTS","purl":"pkg:deb/ubuntu/zephyr?arch=source&distro=noble"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.1.2-1.1","3.1.2-1.1build1"],"ecosystem_specific":{"binaries":[{"binary_name":"libzephyr4","binary_version":"3.1.2-1.1build1"},{"binary_name":"libzephyr4-krb5","binary_version":"3.1.2-1.1build1"},{"binary_version":"3.1.2-1.1build1","binary_name":"zephyr-clients"},{"binary_name":"zephyr-server","binary_version":"3.1.2-1.1build1"},{"binary_name":"zephyr-server-krb5","binary_version":"3.1.2-1.1build1"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-90587.json"}},{"package":{"name":"zephyr","ecosystem":"Ubuntu:26.10","purl":"pkg:deb/ubuntu/zephyr?arch=source&distro=stonking"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.1.2-4"],"ecosystem_specific":{"binaries":[{"binary_version":"3.1.2-4","binary_name":"libzephyr4"},{"binary_version":"3.1.2-4","binary_name":"libzephyr4-krb5"},{"binary_name":"zephyr-clients","binary_version":"3.1.2-4"},{"binary_version":"3.1.2-4","binary_name":"zephyr-server"},{"binary_name":"zephyr-server-krb5","binary_version":"3.1.2-4"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-90587.json"}},{"package":{"name":"zephyr","ecosystem":"Ubuntu:26.04:LTS","purl":"pkg:deb/ubuntu/zephyr?arch=source&distro=resolute"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["3.1.2-1.1build1","3.1.2-4"],"ecosystem_specific":{"binaries":[{"binary_name":"libzephyr4","binary_version":"3.1.2-4"},{"binary_name":"libzephyr4-krb5","binary_version":"3.1.2-4"},{"binary_name":"zephyr-clients","binary_version":"3.1.2-4"},{"binary_name":"zephyr-server","binary_version":"3.1.2-4"},{"binary_name":"zephyr-server-krb5","binary_version":"3.1.2-4"}]},"database_specific":{"source":"https://github.com/canonical/ubuntu-security-notices/blob/main/osv/cve/2026/UBUNTU-CVE-2026-90587.json"}}],"schema_version":"1.9.2","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:P/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"},{"type":"Ubuntu","score":"medium"}]}