# USB Gadget F_HID 生命周期问题
### 概述
该漏洞存在于 Linux 内核的 `f_hid` USB 小工具驱动中,涉及 `struct cdev` 与其宿主 `struct f_hidg` 的生命周期管理不当,导致潜在的 **use-after-free** 问题。
### 影响版本
漏洞影响使用 `f_hid` 驱动的 Linux 内核版本,特别是在通过 libusbgx 或 configfs 管理 USB 小工具设备时。具体修复版本未提及,但已在内核提交中修复。
### 细节
- `struct f_hidg` 中嵌套的 `struct cdev` 没有正确绑定到宿主结构体的生命周期。
- 当 `/dev/hidgN` 设备被打开时,若此时删除了对应的 USB gadget 设备,可能会导致 `cdev` 在已被释放后仍被访问。
- 漏洞可通过以下方式复现(例如使用 libusbgx 示例程序):
  ```bash
  gadget-hid
  exec 3<> /dev/hidg0
  gadget-vid-pid-remove
  exec 3<&-
  ```
- 在 gadget 删除过程中,`cdev` 被提前释放,而仍有引用存在。
### 修复方法
- 将 `cdev` 的生命周期绑定到 `struct f_hidg`。
- 使用 `cdev_device_add()` 与 `cdev_device_del()` 辅助函数统一管理设备生命周期。
- 确保设备对象的添加和删除时间与 `struct f_hidg` 保持一致,防止在访问 `/dev/hidgN` 时产生悬空指针引用。
### 影响
此漏洞可能造成 **use-after-free**,攻击者可通过操作设备节点在内核上下文中访问已经被释放的内存,可能导致系统崩溃或潜在的权限提升风险。
                                        
                                    
                                | # | POC 描述 | 源链接 | 神龙链接 | 
|---|
标题: 503 Service Temporarily Unavailable -- 🔗来源链接
标签:
标题: 503 Service Temporarily Unavailable -- 🔗来源链接
标签:
标题: Making sure you're not a bot! -- 🔗来源链接
标签:
标题: Making sure you're not a bot! -- 🔗来源链接
标签:
标题: 503 Service Temporarily Unavailable -- 🔗来源链接
标签:
标题: Making sure you're not a bot! -- 🔗来源链接
标签:
标题: 503 Service Temporarily Unavailable -- 🔗来源链接
标签:
暂无评论