secretmem:如果 arch 无法设置直接映射,则禁用 memfd_secret() (CVE-2024-50182)

admin 2024-11-10 19:30:52 Ali_nvd 来源:ZONE.CI 全球网 0 阅读模式
secretmem:如果 arch 无法设置直接映射,则禁用 memfd_secret() (CVE-2024-50182)

CVE编号

CVE-2024-50182

利用情况

暂无

补丁情况

N/A

披露时间

2024-11-08
漏洞描述
在Linux内核中,已经解决了以下漏洞:如果架构无法设置直接映射,将禁用memfd_secret()。如果无法设置直接映射(can_set_direct_map()返回false),则从memfd_secret()系统调用返回-ENOSYS错误。这在某些arm64配置中就是这种情况,在这些配置中,如果直接映射首先以4k粒度进行设置,则可以在直接映射中标记4k PTEs为非存在状态(这符合ARM的先破坏后创建的语义,不容易拆分大/巨页)。更具体地说,在arm64系统上,如果无法设置直接映射(can_set_direct_map()返回false),则set_direct_map_invalid_noflush()不执行任何操作,但它仍然返回成功(0)而不是错误。这意味着memfd_secret似乎“工作正常”(例如,系统调用成功,你可以映射文件描述符并在页面中出现故障),但它实际上并没有实现从直接映射中删除其内存的目标。请注意,通过这个补丁,当can_set_direct_map()返回false时,memfd_secret()将开始报错(例如,在arm64上,当启用CONFIG_RODATA_FULL_DEFAULT_ENABLED=n、CONFIG_DEBUG_PAGEALLOC=n和CONFIG_KFENCE=n时)。但这仍然比目前的静默失败更好。由于CONFIG_RODATA_FULL_DEFAULT_ENABLED默认为'y',因此大多数arm64系统实际上拥有工作的memfd_secret()并不会受到影响。从最初的memfd_secret补丁系列的迭代过程中可以看出,在这些情况下禁用系统调用是预期的行为(相对于让set_direct_map_invalid_noflush返回错误,后者将在页面错误时间导致SIGBUS),但是在v16和v17之间检查它时被遗漏了,当时secretmem移开了CMA分配。相关链接:[1](https://lore.kernel.org/lkml/[email protected]/)、[2](https://lore.kernel.org/lkml/[email protected]/#t)、[3](https://lore.kernel.org/lkml/[email protected]/)。
解决建议
"将组件 Linux 升级至 5.14 及以上版本"
参考链接
https://git.kernel.org/stable/c/532b53cebe58f34ce1c0f34d866f5c0e335c53c6
https://git.kernel.org/stable/c/5ea0b7af38754d2b45ead9257bca47e84662e926
https://git.kernel.org/stable/c/757786abe4547eb3d9d0e8350a63bdb0f9824af2
https://git.kernel.org/stable/c/7caf966390e6e4ebf42775df54e7ee1f280ce677
https://git.kernel.org/stable/c/d0ae6ffa1aeb297aef89f49cfb894a83c329ebad
受影响软件情况
# 类型 厂商 产品 版本 影响面
1
运行在以下环境
系统 debian_11 linux * Up to (excluding) 5.10.226-1
运行在以下环境
系统 debian_12 linux * Up to (excluding) 6.1.115-1
CVSS3评分 N/A
  • 攻击路径 N/A
  • 攻击复杂度 N/A
  • 权限要求 N/A
  • 影响范围 N/A
  • 用户交互 N/A
  • 可用性 N/A
  • 保密性 N/A
  • 完整性 N/A
N/A
CWE-ID 漏洞类型
- avd.aliyun.com
weinxin
版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
评论:0   参与:  0