Skip to main content
VulnerabilityPublished Updated

CVE-2026-64347: Linux kernel · usb: gadget: composite: fix dead empty check in the USB_DT_OTG handler

Affects Linux kernelSource CVE Database V5

0
Compare

Not known to be exploited · fixed in fcb21bf747640c9d6bd1eda9da85420f076d59c1 : update Linux kernel when convenient.

Data as of 6 Nov 2026, 17:04 UTC

Severity
Unrated

Rated by Threat Radar · No CVSS score from NVD or the CNA

Thin evidence

One scorer or none
CISA SSVC
Exploitation
No evidence of active exploitation and no public proof of concept
Automatable
Attackers cannot reliably automate steps 1–4 of the kill chain
Technical impact
Limited control over the software or limited information exposure

CISA SSVC assessment, 2026-11-06.

Patch
Available – fixed in fcb21bf747640c9d6bd1eda9da85420f076d59c1, f8f680609c2b3ab795ffcd6f21585b6dfc46d395, d3e72cfef2e38bd588055739a8100d14f9773b17 +5

Exploitation evidence

  1. Disclosed: evidence found.

    CVE published 25 Jul 2026

  2. Detectable: no evidence on record.

    No public nuclei template indexed

  3. Weaponized: no evidence on record.

    No public exploit code indexed in Metasploit or Exploit-DB

  4. Exploited in the wild: no evidence on record.

    Not in CISA KEV and no source reports exploitation

  5. Observed by OffSeq Mirage: no evidence on record.

    No attack traffic recorded by OffSeq Mirage sensors

A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 6 Nov 2026.

What to do

Upgrade to a fixed release listed under Affected software.

Affected software

ProductAffectedFixed in
LinuxLinuxAffected
  • ≥ 53e6242db8d60da0587d36951cc9434d1a1c21dd, < fcb21bf747640c9d6bd1eda9da85420f076d59c1
Fixed in
  • fcb21bf747640c9d6bd1eda9da85420f076d59c1
LinuxLinuxAffected
  • ≥ 53e6242db8d60da0587d36951cc9434d1a1c21dd, < f8f680609c2b3ab795ffcd6f21585b6dfc46d395
Fixed in
  • f8f680609c2b3ab795ffcd6f21585b6dfc46d395
LinuxLinuxAffected
  • ≥ 53e6242db8d60da0587d36951cc9434d1a1c21dd, < d3e72cfef2e38bd588055739a8100d14f9773b17
Fixed in
  • d3e72cfef2e38bd588055739a8100d14f9773b17
LinuxLinuxAffected
  • ≥ 53e6242db8d60da0587d36951cc9434d1a1c21dd, < 2454264b2ab4cf0055c0bfd39e79f830452bd0db
Fixed in
  • 2454264b2ab4cf0055c0bfd39e79f830452bd0db
LinuxLinuxAffected
  • ≥ 53e6242db8d60da0587d36951cc9434d1a1c21dd, < 91b3ecd34b60f950c50c560974945b6596a6f207
Fixed in
  • 91b3ecd34b60f950c50c560974945b6596a6f207
LinuxLinuxAffected
  • ≥ 53e6242db8d60da0587d36951cc9434d1a1c21dd, < 56add2b9b2e89ec61c0761165d758f73004fdfdf
Fixed in
  • 56add2b9b2e89ec61c0761165d758f73004fdfdf

Description

In the Linux kernel, the following vulnerability has been resolved: usb: gadget: composite: fix dead empty check in the USB_DT_OTG handler The OTG branch of composite_setup() falls back to the first configuration when none is selected: if (cdev->config) config = cdev->config; else config = list_first_entry(&cdev->configs, struct usb_configuration, list); if (!config) goto done; ... memcpy(req->buf, config->descriptors[0], value); list_first_entry() never returns NULL. On an empty list it returns container_of() of the list head. So the "if (!config)" check is dead. When cdev->configs is empty, config points at the head inside struct usb_composite_dev. config->descriptors[0] reads whatever sits at that offset. The memcpy copies up to w_length bytes of it into the response buffer. cdev->configs can be empty in two cases. One is a teardown race on gadget unbind with a control transfer in flight. The other is a driver that sets is_otg before it adds a config. A reproducer that holds cdev->configs empty triggers a KASAN fault in this branch. Use list_first_entry_or_null() so the existing check does its job.

References

Community reviews

Loading reviews…