CVE-2025-71142CVE-2025-71142是Linux内核cpuset子系统中的一个中等严重性漏洞。该漏洞位于kernel/cgroup/cpuset.c文件的remote_partition_disable函数中,当在CPU热插拔场景下禁用远程分区时会触发内核警告。具体而言,当某个CPU(如CPU 15)被offline后,subpartitions_cpus会被清空,导致子分区需要与top_cpuset共享CPU资源。在这种状态下,用户尝试禁用远程分区时会触发警告,表明effective_xcpus不是subpartitions_cpus的子集。该漏洞虽然不会直接导致系统崩溃或数据泄露,但会产生内核警告,影响系统可用性和日志清洁度。攻击者需要具有低权限本地访问能力,通过操作cgroup文件系统触发此问题。
该漏洞源于Linux内核cpuset子系统中分区状态管理的不完善处理。在正常情况下,cpuset允许创建CPU分区以实现资源隔离。然而,当发生CPU热插拔事件(如将CPU 15设置为offline)时,系统会清空subpartitions_cpus字段,因为没有可用的CPU分配给顶级cpuset。这导致所有分区必须与top_cpuset共享CPU资源。
问题出现在remote_partition_disable函数中(第1651行附近),该函数在处理分区禁用操作时,没有正确处理subpartitions_cpus为空的情况。当用户执行`echo member > cpuset.cpus.partition`命令禁用分区时,代码会检查effective_xcpus是否为subpartitions_cpus的子集,但由于subpartitions_cpus已被清空,这个检查会失败并触发内核警告。
修复方案包括两个方面:1)修改警告逻辑,仅在subpartitions_cpus非空且effective_xcpus确实不是其子集时才发出警告;2)在CPU热插拔过程中增加分区状态检查,当subpartitions_cpus为空时主动使分区失效,通知用户分区已变为无效状态(CPU与top_cpuset共享)。