Skip to main content

Linux Kernel CVE-2026-64233

| EUVDEUVD-2026-48642 MEDIUM
2026-07-24 Linux GHSA-3j5c-rcjj-m4jc
5.5
CVSS 3.1 · NVD
Share

Severity by source

NVD PRIMARY
5.5 MEDIUM
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
vuln.today AI
4.1 MEDIUM

Race condition warrants AC:H; configfs mount and UDC write access requires elevated privilege (PR:H); no confidentiality or integrity impact.

3.1 AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H
4.0 AV:L/AC:H/AT:P/PR:H/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE
4.1 MEDIUM
AV:L/AC:H/PR:H/UI:N/S:U/C:N/I:N/A:H
Red Hat
MEDIUM
qualitative

Primary rating from NVD.

CVSS VectorNVD

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

5
Analysis Generated
Aug 12, 2026 - 19:26 vuln.today
CVSS changed
Aug 12, 2026 - 19:22 NVD
5.5 (MEDIUM)
Patch available
Jul 24, 2026 - 17:48 EUVD
CVE Published
Jul 24, 2026 - 15:27 nvd
MEDIUM 5.5
CVE Published
Jul 24, 2026 - 15:27 cve.org
UNKNOWN (no severity yet)

DescriptionNVD

In the Linux kernel, the following vulnerability has been resolved:

usb: gadget: uvc: hold opts->lock across XU walks in uvc_function_bind

uvc_function_bind() walks &opts->extension_units twice without holding opts->lock:

  • directly, for the iExtension string-descriptor fixup loop;
  • indirectly, four times via uvc_copy_descriptors() (once per speed),

where the helper iterates uvc->desc.extension_units (which aliases &opts->extension_units) to size and emit XU descriptors.

The configfs side (uvcg_extension_make / uvcg_extension_drop, in drivers/usb/gadget/function/uvc_configfs.c) takes opts->lock around its list_add_tail / list_del operations. A privileged userspace process that holds the configfs subtree open and writes the gadget UDC name to bind the function while concurrently rmdir()'ing an extensions subdir can race uvcg_extension_drop() against the bind-time list walks and dereference a freed struct uvcg_extension.

Hold opts->lock from the start of the XU string-descriptor fixup through the last uvc_copy_descriptors() call, releasing on the descriptor-error path via a new error_unlock label that drops the lock before falling through to the existing error label. This matches the locking discipline of the configfs callbacks and removes the only remaining unsynchronised reader of the XU list during bind.

Reachability: only privileged processes that can mount configfs and write to gadget UDC files can trigger the race, so this is a correctness fix rather than a security boundary.

AnalysisAI

Use-after-free in the Linux kernel USB UVC gadget driver allows a privileged local user to crash the kernel by racing configfs extension-unit teardown against the bind-time list walks in uvc_function_bind(). The bind path walks opts->extension_units without holding opts->lock, while the configfs write path (uvcg_extension_drop) correctly holds the lock, creating an asymmetric locking pattern that enables a freed struct uvcg_extension to be dereferenced. No public exploit exists and EPSS sits at 0.16% (5th percentile), but patches are confirmed across multiple stable kernel branches including 6.6.143, 6.12.93, 6.18.35, 7.0.12, and 7.1.

Technical ContextAI

The affected component is the USB gadget subsystem's UVC (USB Video Class) function driver in drivers/usb/gadget/function/uvc.c, introduced at commit 0525210c9840 (Linux 6.3). The root cause is a TOCTOU race condition (consistent with CWE-416 use-after-free, though no CWE is formally assigned) arising from asymmetric locking: uvc_function_bind() walks opts->extension_units up to five times - once directly for iExtension string-descriptor fixup and four more times indirectly via uvc_copy_descriptors() (one per USB speed) - all without acquiring opts->lock. The configfs counterpart, uvcg_extension_drop(), correctly wraps list_del with opts->lock held. A concurrent rmdir on an extension unit subdir can free the underlying struct uvcg_extension while the bind path is mid-walk, producing a dangling pointer dereference. CPE data (cpe:2.3:a:linux:linux:*:*:*:*:*:*:*:*) confirms the scope spans the mainline kernel tree. The fix introduces an error_unlock label that drops opts->lock before falling through to the existing error path, matching the configfs locking discipline.

RemediationAI

Upgrade to a patched kernel version - Linux 6.6.143, 6.12.93, 6.18.35, 7.0.12, or 7.1 - by applying the appropriate stable commits from git.kernel.org (links above). Ubuntu users should follow USN-8618-1 at https://ubuntu.com/security/notices/USN-8618-1. For systems that cannot be immediately updated, the most targeted compensating control is to unmount or restrict namespace access to configfs (preventing writes to /sys/kernel/config/usb_gadget/), which eliminates the race trigger but will disable all USB gadget functionality - a significant trade-off on embedded or OTG-capable devices. Alternatively, kernel lockdown mode or restricting CAP_SYS_ADMIN via seccomp/AppArmor policies can prevent unprivileged processes from reaching the vulnerable path, with the trade-off of restricting broader system administration capabilities. The NVD advisory is at https://nvd.nist.gov/vuln/detail/CVE-2026-64233.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Micro 6.2 Fixed
openSUSE Leap 16.0 Fixed
SUSE Linux Enterprise Server 16.0 Affected
SUSE Linux Enterprise Server for SAP applications 16.0 Affected
SUSE Linux Micro Extras 6.2 Affected

Share

CVE-2026-64233 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy