IPBUF安全漏洞报告
English
CVE-2026-31571 CVSS 5.5 中危

CVE-2026-31571: Linux内核drm/i915状态损坏漏洞

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

漏洞信息

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

相关标签

Linux Kernel本地拒绝服务drm/i915逻辑错误

漏洞概述

Linux内核drm/i915驱动存在逻辑漏洞,可能导致系统状态损坏。因函数调用顺序错误,unlink_nv12_plane()会清除plane_atomic_check()已设置的平面状态。当用户将Y平面改为普通平面时,状态覆盖破坏内核逻辑,导致系统崩溃。该漏洞需本地低权限访问,影响可用性。

技术细节

该漏洞位于Linux内核的图形驱动子系统中,具体涉及Intel i915驱动的NV12格式处理机制。漏洞的根本原因在于unlink_nv12_plane()与plane_atomic_check()的执行顺序冲突。在正常的原子更新流程中,plane_atomic_check()首先根据用户空间的请求计算并验证新的平面状态。然而,如果该平面之前被用作NV12格式的Y平面,随后的unlink_nv12_plane()调用会错误地清空刚刚计算好的状态数据。这种状态不一致会导致驱动程序内部逻辑混乱,触发内核警告(WARN)并可能导致系统挂起或崩溃。攻击者可利用此漏洞,通过特定的ioctl调用序列触发该逻辑缺陷,从而造成本地拒绝服务。修复方案通过调整执行流,确保在计算新状态前先解除旧的NV12链接,从而保证了状态管理的正确性和系统的稳定性。

攻击链分析

STEP 1
步骤1:获取本地访问权限
攻击者需要获得目标系统的本地低权限用户访问权限(AV:L, PR:L)。
STEP 2
步骤2:执行图形操作
攻击者利用用户空间程序调用DRM接口,针对Intel i915显卡驱动进行操作。
STEP 3
步骤3:触发状态错误
攻击者通过特定的ioctl序列,将一个原本配置为NV12 Y平面的设备重新配置为普通平面。
STEP 4
步骤4:导致系统崩溃
内核按错误顺序执行 atomic_check 和 unlink 操作,破坏平面状态,触发内核警告或导致系统崩溃(DoS)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC for CVE-2026-31571: Trigger i915 plane state clobber * Compile: gcc -o poc_cve2026_31571 poc_cve2026_31571.c -ldrm * Usage: ./poc_cve2026_31571 */ #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/ioctl.h> #include <drm/drm.h> #include <drm/drm_fourcc.h> // Conceptual PoC to demonstrate the trigger sequence int main(int argc, char **argv) { int drm_fd; const char *device = "/dev/dri/card0"; printf("[+] Opening device: %s\n", device); drm_fd = open(device, O_RDWR); if (drm_fd < 0) { perror("[-] Failed to open device"); return 1; } printf("[+] Device opened successfully. FD: %d\n", drm_fd); printf("[+] Attempting to trigger atomic plane state change...\n"); // NOTE: Full exploitation requires constructing a specific DRM_IOCTL_MODE_ATOMIC // request that configures a plane as NV12 first, then reconfigures it // as a normal plane (e.g., XRGB8888) in a way that triggers the // plane_atomic_check() -> unlink_nv12_plane() race/order bug. // This skeleton demonstrates the necessary context. struct drm_mode_atomic atomic_req = {0}; // Setup flags and props here... (omitted for brevity as it depends on specific HW) // Step 1: Set plane to NV12 (Y-plane) // Step 2: Re-set plane to Normal format // Result: Kernel WARN/Oops due to state clobbering printf("[!] This PoC is a demonstration of the trigger logic.\n"); printf("[!] Exploitation requires specific hardware support and detailed property setup.\n"); close(drm_fd); return 0; }

影响范围

Linux Kernel (具体版本参考Git提交记录)

防御指南

临时缓解措施
限制非特权用户对图形设备(/dev/dri/*)的访问权限,以减少本地攻击面。

参考链接

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