# virtio-mmio 虚机设备生命周期漏洞
## 概述
在 Linux 内核的 `virtio-mmio` 驱动中,存在一个关于 `vm_dev` 生命周期管理的问题,可能导致 **use-after-free** 漏洞。该问题源于错误地使用 `devres` 管理 `vm_dev` 结构体的内存生命周期。
---
## 影响版本
该漏洞影响使用 virtio-mmio 驱动的 Linux 内核版本,具体版本未详述,可参考补丁提交记录确认受影响范围。
---
## 细节
- `vm_dev` 拥有独立的生命周期,由于其内嵌了一个 `struct device`,因此其释放应由配套的 release 回调函数控制。
- 当前错误地使用 `devres`(设备资源管理机制)来分配 `vm_dev` 结构体,导致在平台设备(`platform_device`)移除时,`vm_dev` 所占用的内存被提前释放。
- 当 release 回调实际被调用时,访问的已是释放后的内存地址,造成 **use-after-free**。
- 若在内核中启用 `CONFIG_DEBUG_KOBJECT_RELEASE` 选项,并通过 sysfs 解绑设备,该问题将更容易被复现。
---
## 影响
- 可能触发 **use-after-free** 错误,进而导致系统崩溃或潜在的安全风险。
- 破坏了设备对象生命周期的正确管理。
---
## 解决方案
修复方式简单直接:
- **不使用 devres** 分配 `vm_dev` 结构。
- 改为手动分配并确保其生命周期由 release 回调正确管理,避免在平台设备卸载时提前释放。
# | POC 描述 | 源链接 | 神龙链接 |
---|
暂无评论