dm cache:修复在 cache_ctr 错误时刷新未初始化的 delayed_work 的问题(CVE-2024-50280)
CVE编号
CVE-2024-50280
利用情况
暂无
补丁情况
N/A
披露时间
2024-11-19
漏洞描述
在Linux内核中,已经解决了一个漏洞:dm缓存:修复因cache_ctr错误而冲刷未初始化的delayed_work的问题当缓存创建失败时,flush_work()可能会出现意外的WARN_ON警告,这是由于在cache_create()的错误路径中销毁了未初始化的delayed_work唤醒器所导致的。例如,当超级块校验和出现错误时,就会出现这种警告。复现步骤:1. 使用dmsetup创建cmeta设备,使用表"0 8192 linear /dev/sdc 0"。2. 使用dmsetup创建cdata设备,使用表"0 65536 linear /dev/sdc 8192"。3. 使用dmsetup创建corig设备,使用表"0 524288 linear /dev/sdc 262144"。4. 使用dd命令向cmeta设备写入随机数据,设置块大小为4k,并使用direct选项。5. 使用dmsetup创建一个缓存设备,使用表"0 524288 cache /dev/mapper/cmeta /dev/mapper/cdata devmapper/corig 128 2 metadata2 writethrough smq 0"。内核日志:(摘要)警告:CPU:0 进程ID:84 在kernel/workqueue.c文件的第4178行,__flush_work函数中的偏移地址+0x5d4/0x890处。修复方法是通过从构造函数的错误路径中移除cancel_delayed_work_sync()。此补丁不会影响并发dm_resume和dm_destroy的use-after-free修复(提交号为6a459d8edbdb,“dm缓存:修复destroy()中的UAF”)。因为cache_dtr并未发生改变。
解决建议
"将组件 Linux 升级至 6.2 及以上版本"
文章评论