CVE-2026-23000CVE-2026-23000是Linux内核中net/mlx5e驱动程序的一个中等严重性安全漏洞。该漏洞源于mlx5e_netdev_change_profile函数在配置文件变更回滚失败时的处理不当。当该函数无法附加新配置文件且无法回滚到旧配置文件时,会产生一个悬空的netdev,其netdev_priv已被完全重置。攻击者通过本地低权限账户触发switchdev模式变更时,如果第一次尝试失败,再次尝试更改配置文件将导致系统崩溃,触发NULL指针解引用错误。此漏洞需要攻击者具有本地访问权限,且无需用户交互即可触发,成功利用可导致系统可用性中断(拒绝服务)。
漏洞核心问题在于mlx5e_netdev_change_profile()函数在处理配置文件变更失败时缺乏适当的错误恢复机制。具体流程如下:1) 首次尝试通过switchdev模式变更调用mlx5e_netdev_change_profile();2) 由于mlx5e_priv_init失败(如创建kthread失败),新配置文件初始化失败;3) 回滚到原始配置文件的尝试也失败(err=-12);4) 此时netdev_priv被重置为NULL,但系统仍保留该netdev;5) 第二次尝试相同操作时,mlx5e_detach_netdev()函数尝试访问已被清空的priv->mdev成员;6) 导致NULL指针解引用,触发kernel oops。修复方案包括:在mlx5e_netdev_change_profile()中增加对当前priv有效性的检查,如果priv已为空则直接附加新配置文件而不尝试访问旧配置。同时将netdev和mdev直接传递给需要该函数的流程,避免依赖可能已失效的priv指针。