CVE-2023-53546CVE-2023-53546是Linux内核中mlx5驱动的一个内存泄漏漏洞,位于mlx5dr_cmd_create_reformat_ctx函数中。该漏洞属于资源管理缺陷类问题,在Mellanox ConnectX系列网卡驱动中,当mlx5_cmd_exec函数执行失败时,函数未能正确释放通过'in'指针分配的内存资源,导致内存泄漏问题持续累积。
该漏洞的CVSS评分为5.5分,属于中危级别。从CVSS向量分析来看,该漏洞的攻击向量为本地(AV:L),攻击复杂度低(AC:L),所需权限为低权限(PR:L),无需用户交互(UI:N),对机密性无影响(C:N),对完整性无影响(I:N),但对可用性影响较高(A:H)。这意味着该漏洞主要影响系统的稳定性和可用性,攻击者可以通过本地低权限账户触发该漏洞,反复触发后可能导致系统内存资源耗尽,最终引发系统性能下降甚至崩溃。
该漏洞影响使用Mellanox mlx5系列网卡驱动的Linux系统,包括各种企业级服务器和高性能计算环境。漏洞已在多个Linux内核稳定版本中得到修复,涉及多个内核维护分支。
该漏洞位于Linux内核net/mlx5驱动的mlx5dr_cmd_create_reformat_ctx函数中。该函数负责创建DR(Device-managed Resources)格式转换上下文,在执行过程中会分配内存并通过mlx5_cmd_exec向硬件发送命令。
漏洞的根本原因是错误处理路径中的资源释放逻辑缺陷。具体而言,当mlx5dr_cmd_create_reformat_ctx函数调用mlx5_cmd_exec执行硬件命令时,如果mlx5_cmd_exec返回失败(即命令执行未成功),函数会直接返回错误码,但在此之前通过'in'指针分配的内存缓冲区并未被释放。每次调用失败都会泄漏一块内存。
修复方案是将内存释放操作(kfree或类似函数)移动到mlx5_cmd_exec调用之后,确保无论命令执行成功与否,分配的内存都能被正确回收。这种资源管理错误是内核驱动开发中常见的缺陷模式,特别是在错误处理路径中容易遗漏资源清理。
利用方式方面,攻击者需要具有本地低权限访问权限,可以通过编写触发mlx5dr_cmd_create_reformat_ctx函数的程序或利用现有工具反复触发失败条件来泄漏内核内存。虽然单次泄漏的内存量有限,但持续触发可导致内核内存资源耗尽,影响系统可用性。