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

CVE-2025-71118: Linux kernel ACPICA空指针解引用漏洞

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

漏洞信息

漏洞编号
CVE-2025-71118
漏洞类型
空指针解引用
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel (ACPICA组件), Honor Magicbook 14 Pro

相关标签

空指针解引用Linux KernelACPICA拒绝服务本地攻击DSDT固件漏洞Honor Magicbook内核漏洞

漏洞概述

CVE-2025-71118是Linux kernel中ACPICA(Advanced Configuration and Power Interface Component Architecture)组件的一个空指针解引用漏洞。该漏洞存在于acpi_ns_get_next_node()函数中,当start_node参数为NULL时,代码尝试访问parent_node成员导致空指针解引用。攻击者可通过构造恶意的DSDT( Differentiated System Description Table)表触发此漏洞。虽然此前commit 0c9992315e73已尝试修复start_node和acpi_gbl_root_node都为NULL的情况,但未能完全解决问题。该漏洞已在Linux kernel mainline稳定版中修复,影响使用ACPICA固件接口的Linux系统,尤其是Honor Magicbook 14 Pro设备因使用有缺陷的DSDT表而受影响。

技术细节

漏洞根源在于ACPICA的命名空间遍历逻辑。在acpi_ns_get_next_node()函数中,代码首先检查start_node是否为NULL,但如果start_node为NULL且不等于ACPI_ROOT_OBJECT时,代码仍会尝试访问parent_node->parent成员,导致空指针解引用。问题出在DSDT表解析过程中,当ACPI命名空间未正确初始化或DSDT表包含异常数据时,start_node可能为NULL但未被正确处理。修复方案是将start_node的NULL检查移到if语句块外部,确保在任何情况下都不会对NULL指针进行解引用操作。受影响的设备包括使用有缺陷DSDT表的Honor Magicbook 14 Pro (BIOS 1.13 05/08/2025),攻击者需要本地访问权限且无需用户交互即可触发漏洞。

攻击链分析

STEP 1
步骤1
攻击者获取目标系统的本地访问权限(AV:L要求本地访问)
STEP 2
步骤2
构造包含恶意数据的DSDT表或利用系统现有的缺陷DSDT表
STEP 3
步骤3
触发ACPICA组件的acpi_ns_get_next_node()函数,传入NULL的start_node参数
STEP 4
步骤4
函数内部对NULL指针进行解引用,访问parent_node成员,导致系统崩溃或拒绝服务
STEP 5
步骤5
成功利用后可能导致系统可用性中断(CVSS可用性影响评级为H高)

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// CVE-2025-71118 PoC - Malicious DSDT Table Trigger // This PoC demonstrates the NULL pointer dereference in acpi_ns_get_next_node() // Compile: gcc -o cve202571118_poc cve202571118_poc.c #include <stdio.h> #include <stdlib.h> #include <string.h> // Simulate the vulnerable code path void acpi_ns_get_next_node_vulnerable(void *start_node, void *acpi_gbl_root_node) { void *parent_node = NULL; void *next_node = NULL; // Original vulnerable code pattern // The NULL check is inside the if block, causing NULL dereference if (start_node == NULL) { // This line causes NULL pointer dereference when start_node is NULL parent_node = ((void**)start_node)[0]; // Dereferencing NULL pointer } printf("Parent node: %p\n", parent_node); } // Fixed version void acpi_ns_get_next_node_fixed(void *start_node, void *acpi_gbl_root_node) { void *parent_node = NULL; // Fixed code: Check NULL before any access if (start_node == NULL) { start_node = acpi_gbl_root_node; } // Now safe to access if (start_node != NULL) { parent_node = ((void**)start_node)[0]; } printf("Parent node (fixed): %p\n", parent_node); } int main() { printf("CVE-2025-71118 PoC - ACPICA NULL Pointer Dereference\n"); printf("==================================================\n\n"); printf("Testing vulnerable code path with NULL start_node:\n"); acpi_ns_get_next_node_vulnerable(NULL, NULL); printf("\nTesting fixed code path with NULL start_node:\n"); acpi_ns_get_next_node_fixed(NULL, NULL); return 0; }

影响范围

Linux Kernel < 0d8bb08126920fd4b12dbf32d9250757c9064b36
Linux Kernel < 1bc34293dfbd266c29875206849b4f8e8177e6df
Linux Kernel < 7f9b951ed11842373851dd3c91860778356d62d3
Linux Kernel < 9d6c58dae8f6590c746ac5d0012ffe14a77539f0
Linux Kernel < b84edef48cc8afb41150949a87dcfa81bc95b53e
Honor Magicbook 14 Pro (BIOS 1.13 05/08/2025)

防御指南

临时缓解措施
由于该漏洞需要本地访问权限且利用依赖于ACPI固件表,无法通过简单的网络配置进行缓解。建议:1) 限制对受影响系统的物理访问权限;2) 避免使用受影响型号的Honor设备运行关键系统;3) 等待厂商发布官方内核更新或补丁;4) 如果系统稳定运行且无ACPI问题,可暂时保持当前配置但加强系统监控。

参考链接

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