drm/panthor:对 IO 映射标志更加严格(CVE-2024-53071)
CVE编号
CVE-2024-53071利用情况
暂无补丁情况
N/A披露时间
2024-11-20漏洞描述
在Linux内核中,已经解决了以下漏洞:drm/panthor:对IO映射标志进行更严格的检查当前的panthor_device_mmap_io()实现存在两个问题:1. 在映射DRM_PANTHOR_USER_FLUSH_ID_MMIO_OFFSET时,如果设置了VM_WRITE,panthor_device_mmap_io()会失败,但不会清除VM_MAYWRITE。这意味着用户空间稍后可以使用mprotect()使映射变为可写。这是一个经典的Linux驱动陷阱。 我认为这在实践中实际上并没有任何影响:当GPU通电时,对FLUSH_ID的写入似乎被忽略;而当GPU未通电时,驱动程序提供的dummy_latest_flush页面是故意设计的,不会进行任何刷新,因此写入dummy_latest_flush的唯一可能结果是产生更多的刷新。2. panthor_device_mmap_io()没有阻止MAP_PRIVATE映射(没有VM_SHARED标志的映射)。MAP_PRIVATE与VM_MAYWRITE的组合表明VMA具有写时复制语义,对于VM_PFNMAP是半支持的,但相当受诅咒。 特别是,在这样的映射中,驱动程序只能在mmap()期间通过调用remap_pfn_range()来安装PTE(因为remap_pfn_range()希望将映射的物理内存的物理地址存储到VMA的vm_pgoff中);稍后在错误处理程序(如panthor所做的那样)中安装PTE不支持私有映射,因此如果您尝试在这样的映射中出错,vmf_insert_pfn_prot()会在遇到BUG()检查时崩溃。通过清除VM_MAYWRITE标志(用户空间写入FLUSH_ID没有意义)并要求VM_SHARED(写时复制语义对于FLUSH_ID没有意义)来解决这个问题。两种情况的复现方法都在我的补丁的邮件列表注释中;我在Rock 5B机器上测试了这些漏洞的存在。请注意,我只对补丁进行了编译测试,还没有对其进行测试;我还没有为测试机器设置工作内核构建环境。请在应用之前对其进行测试。解决建议
建议您更新当前系统或软件至最新版,完成漏洞的修复。
参考链接 |
|
---|---|
https://git.kernel.org/stable/c/2604afd65043e8f9d4be036cb1242adf6b5723cf | |
https://git.kernel.org/stable/c/f432a1621f049bb207e78363d9d0e3c6fa2da5db |
- 攻击路径 N/A
- 攻击复杂度 N/A
- 权限要求 N/A
- 影响范围 N/A
- 用户交互 N/A
- 可用性 N/A
- 保密性 N/A
- 完整性 N/A
CWE-ID | 漏洞类型 |
Exp相关链接

版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
评论