CVE-2026-22981CVE-2026-22981是Linux内核idpf驱动中的一个中等严重性安全漏洞,CVSS评分5.5。该漏洞源于重置处理路径中的竞态条件问题。在同时触发硬件重置和软件重置时,驱动程序会丢失vport状态,导致网络设备接口意外关闭。更严重的是,当重置路径发生故障时,netdev设备仍然暴露在外部回调函数中,但vport资源尚未初始化,这会触发内核NULL指针解引用错误,导致系统崩溃。该漏洞影响本地低权限用户,无需用户交互即可触发。攻击成功可导致系统可用性完全丧失(DoS)。
idpf驱动在处理重置时存在两个关键问题:
1. 竞态条件导致状态丢失:当硬重置和软重置同时发生时,驱动会在init任务中丢失vport状态信息。原有的IDPF_VPORT_UP_REQUESTED标志恢复逻辑无法正确处理这种情况,导致网络接口在重置后保持DOWN状态。
2. 资源未初始化时的回调处理失败:在重置路径失败的情况下,vport资源被释放但netdev设备仍然暴露在外。当外部回调尝试访问这些未初始化的资源时,会触发NULL指针解引用。错误日志显示系统在idpf_stop函数中尝试访问地址0x78时崩溃,调用栈涉及__dev_close_many、dev_change_flags等网络核心函数。
漏洞修复方案:在重置处理前调用idpf_detach_and_close()将netdev设置为detached状态并关闭UP状态的netdevs,使用RTNL锁保护detach/down调用以避免与回调函数竞争。重置成功后通过idpf_attach_and_open()恢复netdevs状态。idpf_init_hard_reset()函数返回值不再用于错误处理,改为void类型。