CVE-2026-64233 in Linux
摘要
由 VulDB • 2026-07-24
在 Linux 内核中,已修复以下漏洞:
usb: gadget: uvc: 在 uvc_function_bind 遍历 XU(扩展单元)时持有 opts->lock
uvc_function_bind() 在未持有 opts->lock 的情况下两次遍历 &opts->extension_units:
- 直接地,用于 iExtension 字符串描述符修复循环; - 间接地,通过 uvc_copy_descriptors() 四次(每种速度一次),其中辅助函数迭代 uvc->desc.extension_units(它是 &opts->extension_units 的别名)以计算大小并生成 XU 描述符。
configfs 端(drivers/usb/gadget/function/uvc_configfs.c 中的 uvcg_extension_make / uvcg_extension_drop)在 list_add_tail / list_del 操作周围获取 opts->lock。一个拥有特权的用户空间进程如果保持 configfs 子树打开,并在并发 rmdir() 扩展子目录的同时写入 gadget UDC 名称以绑定功能,则可能与 bind-time 列表遍历竞争 uvcg_extension_drop(),并解引用已释放的 struct uvcg_extension。
从 XU 字符串描述符修复开始到最后一次调用 uvc_copy_descriptors(),一直持有 opts->lock;在描述符错误路径上通过新的 error_unlock 标签释放锁,该标签在下落到现有 error 标签之前先释放锁。这与 configfs 回调的锁定策略相匹配,并消除了绑定期间 XU 列表的唯一剩余未同步读取器。
可达性:只有能够挂载 configfs 并向 gadget UDC 文件写入的特权进程才能触发此竞争条件,因此这是一个正确性修复而非安全边界问题。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.