IPBUF安全漏洞报告
English
CVE-2022-50524 CVSS 5.5 中危

CVE-2022-50524 Linux内核MediaTek IOMMU驱动空指针解引用漏洞

披露日期: 2025-10-07
来源: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

漏洞信息

漏洞编号
CVE-2022-50524
漏洞类型
空指针解引用(Null Pointer Dereference)
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel(iommu/mediatek驱动)

相关标签

空指针解引用Linux内核MediaTekIOMMU本地拒绝服务驱动漏洞CWE-476内核安全DoS

漏洞概述

CVE-2022-50524是Linux内核中MediaTek IOMMU(输入输出内存管理单元)驱动的一个空指针解引用漏洞。该漏洞源于iommu/mediatek驱动在调用platform_get_resource()函数获取平台资源后,未对其返回值进行有效性检查,便直接将其传递给resource_size()函数进行处理。在某些情况下,platform_get_resource()可能返回NULL指针,当代码尝试对NULL指针调用resource_size()时,将触发空指针解引用错误,导致内核崩溃或系统不可用。

该漏洞的CVSS 3.1评分为5.5分,属于中危级别。其攻击向量为本地攻击(AV:L),攻击者需要具有低权限(PR:L)即可触发,无需用户交互(UI:N)。漏洞对机密性影响较低(C:L),对完整性无影响(I:N),但对系统可用性影响较高(A:H),意味着成功利用该漏洞可能导致系统拒绝服务(DoS)。

此漏洞影响Linux内核的MediaTek IOMMU子系统,该子系统主要用于在基于MediaTek芯片的平台上管理DMA(直接内存访问)和设备的内存映射。由于IOMMU是系统硬件资源管理的关键组件,其异常可能导致整个系统崩溃。该漏洞已在多个Linux内核稳定版本中得到修复,包括通过git.kernel.org发布的多个补丁。

技术细节

该漏洞的技术原理如下:

1. **漏洞位置**:Linux内核drivers/iommu/mtk_iommu.c文件中的MediaTek IOMMU驱动初始化代码。

2. **根本原因**:在驱动初始化或探测(probe)过程中,代码调用platform_get_resource()函数从设备树(Device Tree)或ACPI表中获取平台资源(如内存区域寄存器地址)。platform_get_resource()函数在无法找到对应资源时,会返回NULL指针。

3. **缺陷代码模式**:原始代码未检查platform_get_resource()的返回值是否为NULL,直接将其结果传递给resource_size()函数。resource_size()函数内部会访问传入的resource结构体的成员,当传入NULL指针时,会触发空指针解引用(null-ptr-deref),导致内核Oops或panic。

4. **触发条件**:当MediaTek IOMMU设备在设备树中的资源描述缺失或异常时(例如某些定制硬件平台或模拟环境中),platform_get_resource()将返回NULL,触发漏洞。

5. **利用方式**:本地攻击者可以通过加载特定的内核模块、修改设备树配置或在支持的MediaTek平台上运行特制的代码来触发该漏洞。由于需要本地访问权限和低权限认证,利用门槛相对较低,但影响仅限于本地拒绝服务。

6. **修复方案**:在调用resource_size()之前,增加对platform_get_resource()返回值的NULL检查,如果返回NULL则返回错误码(如-ENODEV或-EINVAL),阻止后续的空指针访问。

攻击链分析

STEP 1
步骤1:获取本地访问权限
攻击者需要在运行受影响Linux内核的MediaTek平台上获得本地用户权限(低权限即可),可以通过普通用户账号登录系统。
STEP 2
步骤2:准备触发环境
攻击者检查目标系统是否运行受影响版本的Linux内核,并确认系统使用MediaTek IOMMU驱动。可以通过查看/boot/config或dmesg日志确认。
STEP 3
步骤3:触发空指针解引用
通过加载特定的内核模块、修改设备树配置、或利用驱动探测路径中的缺陷,触发platform_get_resource()返回NULL,进而调用resource_size()导致内核空指针解引用。
STEP 4
步骤4:系统拒绝服务
空指针解引用导致内核Oops或panic,系统崩溃或重启,造成拒绝服务(DoS)攻击效果。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* CVE-2022-50524 PoC - Trigger null pointer dereference in mtk_iommu driver * This PoC demonstrates how a local user can trigger the vulnerability * by attempting to probe the MediaTek IOMMU device with missing platform resources. * * Note: Actual exploitation requires running on a MediaTek-based platform * or a properly configured test environment with the affected kernel version. */ #include <linux/module.h> #include <linux/platform_device.h> #include <linux/of.h> #include <linux/io.h> /* Simulate the vulnerable code path in mtk_iommu_probe() */ static int trigger_mtk_iommu_null_deref(void) { struct platform_device *pdev; struct resource *res; resource_size_t size; /* In a real scenario, this would be a MediaTek IOMMU device node * in the device tree with missing or invalid resource definitions */ pdev = platform_device_alloc("mtk_iommu", -1); if (!pdev) return -ENOMEM; /* platform_get_resource() may return NULL if the resource is not defined */ res = platform_get_resource(pdev, IORESOURCE_MEM, 0); /* BUG: Missing NULL check before calling resource_size() */ size = resource_size(res); /* Triggers null-ptr-deref when res is NULL */ pr_info("IOMMU resource size: %llx\n", (unsigned long long)size); return 0; } static int __init mtk_iommu_poc_init(void) { pr_info("Loading CVE-2022-50524 PoC module\n"); trigger_mtk_iommu_null_deref(); return 0; } static void __exit mtk_iommu_poc_exit(void) { pr_info("Unloading CVE-2022-50524 PoC module\n"); } module_init(mtk_iommu_poc_init); module_exit(mtk_iommu_poc_exit); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("PoC for CVE-2022-50524 - mtk_iommu null pointer dereference");

影响范围

Linux Kernel < 5.10.102(受影响的稳定版本)
Linux Kernel 5.15.x < 5.15.25
Linux Kernel 5.16.x < 5.16.11
Linux Kernel 5.17.x(部分版本受影响)
所有包含未修复的iommu/mediatek驱动的Linux内核版本

防御指南

临时缓解措施
在无法立即升级内核的情况下,可以采取以下临时缓解措施:1)限制本地用户对设备树配置的修改权限;2)通过SELinux或AppArmor等强制访问控制机制限制普通用户访问IOMMU相关接口;3)监控系统稳定性,及时发现异常崩溃事件;4)如果系统支持kexec/kdump,配置崩溃转储以便事后分析。

参考链接

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