fsdax:dax_unshare_iter 需要复制整个块(CVE-2024-50250)
CVE编号
CVE-2024-50250利用情况
暂无补丁情况
N/A披露时间
2024-11-09漏洞描述
在Linux内核中,已经解决了以下漏洞:fsdax模块中的dax_unshare_iter函数在复制块时需要改进。在dax_unshare_iter函数中,从srcmap复制到iomap的数据代码存在严重问题,bfoster最近的fsx更改已经暴露了这个问题。如果传递给dax_file_unshare的pos和len没有对齐到fsblock边界,那么_iter函数中的iter pos和长度将反映这种未对齐状态。dax_iomap_direct_access总是返回映射的fsdax页面的起始位置的指针,即使其pos参数位于该页面的中间也是如此。当iter->pos没有对齐到页面时,这对数据完整性是灾难性的,因为daddr/saddr并不指向与iter->pos相同的文件中的字节。因此,我们将数据复制到错误的地方,从而破坏了用户数据。如果在_iter函数中,iter->pos加上iomap_length()的结果没有对齐到页面,那么我们无法复制完整的块,并且只能部分填充目标块。这对数据保密性是灾难性的,因为我们暴露了stale pmem的内容。通过将copy_pos/copy_len对齐到页面边界来解决这两个问题(请记住,这是fsdax,因此1个fsblock等于1个基本页面),以便我们始终复制完整的块。我们还没有完成——没有调用invalidate_inode_pages2_range,因此拥有文件范围mmap的程序将在文件元数据更新完成后继续访问旧内存映射。请注意返回值——如果unshare成功,我们仍然需要返回iomap iter认为我们正在操作的数量字节。解决建议
"将组件 Linux 升级至 6.2 及以上版本"受影响软件情况
# | 类型 | 厂商 | 产品 | 版本 | 影响面 | ||||
1 | |||||||||
---|---|---|---|---|---|---|---|---|---|
运行在以下环境 | |||||||||
系统 | debian_11 | linux | * | Up to (excluding) 5.10.226-1 |
- 攻击路径 N/A
- 攻击复杂度 N/A
- 权限要求 N/A
- 影响范围 N/A
- 用户交互 N/A
- 可用性 N/A
- 保密性 N/A
- 完整性 N/A
CWE-ID | 漏洞类型 |
Exp相关链接

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