maple_tree:纠正跨度存储上的树损坏(CVE-2024-50200)

admin 2024-11-10 19:26:22 Ali_nvd 来源:ZONE.CI 全球网 0 阅读模式
maple_tree:纠正跨度存储上的树损坏(CVE-2024-50200)

CVE编号

CVE-2024-50200

利用情况

暂无

补丁情况

N/A

披露时间

2024-11-08
漏洞描述
以下是漏洞描述的中文翻译:在Linux内核中,已经解决了一个漏洞,该漏洞与maple_tree有关:补丁系列“maple_tree:修正跨越存储时的树损坏”,版本3。存在一个棘手但微妙的maple树损坏漏洞,似乎自该算法诞生之初就已存在。自从提交名为“mm/mmap:避免在mmap_region()中清空vma树”(commit f8d112a4e657)的提交后,这个漏洞似乎更容易发生,也是从这个点开始,有关此漏洞的报告开始提交。我们之所以能够确定这个漏洞,要归功于Bert Karwatzki的善意努力,他极大地帮助了我追踪并确定造成此问题的原因。当尝试在两个叶节点之间进行跨越存储时,就会出现此漏洞,其中右叶节点是共享父节点的最右边的子节点,并且存储完全消耗了右模式节点。这种情况下,mas_wr_spanning_store()会错误地复制范围内的新和现有条目到最大枢轴点,从而导致maple树损坏。修复补丁通过检测这种情况并禁止错误的重复复制来纠正这一点。补丁提交信息详细说明了这是如何发生的。此外,此系列还包括一个可靠地重现问题的测试,并断言修复是正确的。Bert已经测试了修复并确认解决了他的问题。Mikhail Gavrilov也报告了一个似乎与此完全相同的bug,此修复也应该能解决它。关于这个补丁的详细内容如下:从maple树的实现一开始,就存在一个微妙的bug。这源于如何进行存储操作的方式。当发生存储时,它会覆盖重叠的范围并根据需要调整树的结构来适应这一点。一个范围可能始终跨越两个叶节点。在这种情况下,我们遍历这两个叶节点,确定哪些元素在范围的开始和结束左侧和右侧没有被覆盖,然后重新平衡树以包含这些条目和刚刚插入的条目。这种存储被称为“跨越存储”,由mas_wr_spanning_store()实现。为了到达这个阶段,mas_store_gfp()依次调用mas_wr_preallocate(),mas_wr_store_type()和mas_wr_walk(),遍历树并更新对象(mas),以到达应执行写操作的位置,并确定其存储类型。当需要跨越存储时,该函数返回false并停止在包含目标范围的父节点上,mas_wr_store_type()将mas->store_type标记为wr_spanning_store来表示这一情况。当我们准备执行存储操作时,在mas_wr_spanning_store()中,我们首先确定我们希望存储的范围之后的元素(即要插入的条目之后的位置),这是通过走到树中的下一个枢轴点(即r_mas.last + 1)开始的,从刚刚确定的包含我们打算写入的范围的节点开始。然后我们将注意力转向要插入的条目左侧的条目,其状态由l_mas表示,并将它们复制到一个“大节点”中。“大节点”是一个包含足够槽位以包含两个叶节点数据的特殊节点。然后我们复制我们要存储的条目紧接着这个“大节点”,通过mas_store_b_node()来完成复制和插入新条目的操作。之后如果尚未超过节点的长度(即r_mas.offset <= r_mas.end),我们将复制范围之外的元素到右边。问题就出在这里——在某些特定情况下,这个逻辑可能会出错并损坏maple树。考虑以下树的情况:高度 0 根节点 / \ pivot = 0xffff / \ pivot = ULONG_MAX / 在此情况下发生了树损坏的漏洞。
解决建议
"将组件 Linux 升级至 6.1 及以上版本"
参考链接
https://git.kernel.org/stable/c/677f1df179cb68c12ddf7707ec325eb50e99c7d9
https://git.kernel.org/stable/c/7c7874977da9e47ca0f53d8b9a5b17385fed83f2
https://git.kernel.org/stable/c/982dd0d26d1f015ed34866579480d2be5250b0ef
https://git.kernel.org/stable/c/bea07fd63192b61209d48cbb81ef474cc3ee4c62
受影响软件情况
# 类型 厂商 产品 版本 影响面
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