cxl/port:修复释放后使用问题,允许无序解码器关闭(CVE-2024-50226)

admin 2024-11-10 18:55:14 Ali_nvd 来源:ZONE.CI 全球网 0 阅读模式
cxl/port:修复释放后使用问题,允许无序解码器关闭(CVE-2024-50226)

CVE编号

CVE-2024-50226

利用情况

暂无

补丁情况

N/A

披露时间

2024-11-09
漏洞描述
在Linux内核中,已经解决了一个漏洞,该漏洞涉及到cxl/port模块中的use-after-free问题以及解码器(decoder)关闭顺序不当的问题。在调查初始化失败报告的过程中,对cxl_test进行了更新,以便在模拟根端口/总线设备注册后注册模拟内存设备。然而,这导致了cxl_test在使用后释放(use-after-free)时出现崩溃问题。具体的崩溃信息包括区域建立、解码器注册、目标设置等步骤。在其中一个阶段,两个端点解码器(7.0和14.0)与一个公共的开关解码器(3.0)共享拓扑结构。在拆除阶段,第一个移除的解码器是decoder14.0,它触发了开关解码器的“不按顺序重置”的情况。然而,这导致region3的清理被中止,仍然引用已删除的decoder14.0对象。在第二次尝试拆除region3时,遇到了已经删除的stale decoder14.0对象,导致系统崩溃。该漏洞的修复方案是认识到CXL规范没有强制要求开关解码器的有序关闭。驱动程序强制分配的顺序性,而硬件强制提交的顺序性。因此,与其失败并留下对象悬空,不如始终移除它们。为了支持使cxl_region_decode_reset()始终成功,将cxl_region_invalidate_memregion()的失败转换为警告。在那里崩溃内核是可以的,因为如果无法管理物理地址变异事件(如CXL区域销毁)的缓存,系统完整性将受到威胁。添加了一个新的device_for_each_child_reverse_from()函数,用于在依赖解码器被禁用后清理port->commit_end。换句话说,如果解码器按0->1->2的顺序分配并按1->2->0的顺序禁用,那么只有在2被禁用后,port->commit_end才会从2开始递减,并且由于之前已经禁用了1,它会一直递减到零。
解决建议
建议您更新当前系统或软件至最新版,完成漏洞的修复。
参考链接
https://git.kernel.org/stable/c/101c268bd2f37e965a5468353e62d154db38838e
https://git.kernel.org/stable/c/78c8454fdce0eeee962be004eb6d99860c80dad1
https://git.kernel.org/stable/c/8e1b52c15c81106456437f8e49575040e489e355
受影响软件情况
# 类型 厂商 产品 版本 影响面
1
运行在以下环境
系统 debian_11 linux * Up to (excluding) 5.10.226-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