fork:如果发生错误,请勿在 fork 上调用 uffd(CVE-2024-50220)

admin 2024-11-10 18:56:41 Ali_nvd 来源:ZONE.CI 全球网 0 阅读模式
fork:如果发生错误,请勿在 fork 上调用 uffd(CVE-2024-50220)

CVE编号

CVE-2024-50220

利用情况

暂无

补丁情况

N/A

披露时间

2024-11-09
漏洞描述
在Linux内核中,已经解决了一个漏洞:在fork操作中,如果发生错误,则不要调用uffd。修复系列为“fork:在fork时不要暴露不完全的mm”。在fork过程中,我们可能会将虚拟内存地址空间置于一个不一致的状态,直到fork操作完成。此外,在fork操作过程中可能会遇到错误,表明虚拟内存地址空间无效。因此,我们不应该以任何方式将其暴露给可能与mm或VMAs交互的外部设备,这些设备并非设计用来处理不完整的状态。我们特别更新了fork逻辑,将khugepaged和ksm推迟到操作末尾,只有在没有错误的情况下才调用它们,并在发生错误的情况下禁止uffd观察fork事件。这个补丁(之二)的内容是:目前在fork中,如果uffd在VMAs中注册,我们无条件地暴露进程的虚拟地址空间给用户空间,无论fork过程中是否出现错误。这是在dup_userfaultfd_complete()中执行的,无论是否出现错误都会无条件调用此函数,它执行两项职责:通过dup_fctx()调用注册的处理程序来处理UFFD_EVENT_FORK事件,并清理在dup_userfaultfd()中建立的userfaultfd_fork_ctx对象。这是有问题的,因为在出现错误时虚拟地址空间可能尚未正确初始化。提交d24062914837(“fork:使用__mt_dup()复制dup_mmap()中的maple树”)中的更改使得这个问题更加紧迫,因为我们可能处于一个maple树中的条目尚未一致的状态。我们通过确保在fork错误时回滚状态来解决这个问题,这些状态本来会通过用户空间处理的事件来清理。我们还通过实现一个新的函数dup_userfaultfd_fail()来完成这项任务,该函数执行相同的循环,但只递减引用计数。请注意,我们对父mm和子mm执行mmgrab(),但userfaultfd_ctx_put()会在引用计数降至零时执行mmdrop(),因此我们将正确地避免内存泄漏。
解决建议
"将组件 Linux 升级至 6.8 及以上版本"
参考链接
https://git.kernel.org/stable/c/92b472945dbf8abc020e9259c0088026f7027dfc
https://git.kernel.org/stable/c/f64e67e5d3a45a4a04286c47afade4b518acd47b
受影响软件情况
# 类型 厂商 产品 版本 影响面
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