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

CVE-2022-50525 Linux内核fsl_pamu资源泄漏漏洞

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

漏洞信息

漏洞编号
CVE-2022-50525
漏洞类型
资源泄漏
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel (iommu/fsl_pamu驱动)

相关标签

资源泄漏Linux内核fsl_pamuIOMMU驱动漏洞飞思卡尔PowerPC本地提权可用性影响内核安全

漏洞概述

CVE-2022-50525是Linux内核中iommu/fsl_pamu驱动存在的一个资源泄漏漏洞。该漏洞位于fsl_pamu_probe()函数中,当create_csd()函数调用失败时,函数直接返回而没有正确释放之前分配的irq中断资源和内存资源,导致系统资源泄漏。

fsl_pamu是飞思卡尔(Freescale)PAMU(Peripheral Access Management Unit)外设访问管理单元的驱动,主要用于在PowerPC架构的飞思卡尔/恩智浦处理器上进行IOMMU管理,负责系统外设的地址映射和访问控制。该驱动在系统启动时通过fsl_pamu_probe()进行初始化,期间会分配中断资源、内存资源以及调用create_csd()创建CSD(Coherency Subdomain)结构。

该漏洞的CVSS评分为5.5,属于中危级别。虽然利用条件要求本地低权限访问且无需用户交互,但其可用性影响为高,意味着成功利用可能导致系统资源耗尽或系统不稳定。由于是内核级资源泄漏问题,在长时间运行的系统上可能导致系统资源逐渐耗尽,最终影响系统可用性。

该漏洞已于2025年10月7日披露,修复方案已合并到Linux内核主线,涉及多个稳定版本分支。

技术细节

该漏洞的技术原理如下:

在fsl_pamu_probe()函数中,初始化流程按顺序执行以下操作:
1. 分配和初始化内存资源
2. 注册中断处理函数(irq)
3. 调用create_csd()创建CSD(Coherency Subdomain)结构

漏洞的根本原因在于:当create_csd()函数返回错误时,原始代码直接执行return语句退出probe函数,跳过了错误处理标签(error label)中的资源释放代码。这导致前面已经成功分配的irq中断资源和内存资源没有被正确释放,造成资源泄漏。

修复方案是修改错误处理流程,将直接的return语句改为goto error,跳转到统一的错误处理标签处执行资源释放操作,确保在初始化失败的任何路径上都能正确清理已分配的资源。

利用方式:攻击者需要具备本地低权限访问权限(PR:L),在系统启动或模块加载过程中,如果能够触发create_csd()的失败条件(例如通过特定的硬件配置或资源竞争),就可以导致资源泄漏。重复触发该问题可能导致系统资源逐渐耗尽,影响系统可用性。由于可用性影响为高(A:H),在极端情况下可能导致系统不稳定或需要重启。

攻击链分析

STEP 1
步骤1:获取本地访问
攻击者需要获得目标系统的本地低权限访问权限(PR:L),可通过普通用户账户登录或获取受限shell。
STEP 2
步骤2:触发驱动初始化
通过加载fsl-pamu相关模块或触发系统重启使fsl_pamu_probe()函数执行,在初始化过程中调用create_csd()。
STEP 3
步骤3:制造create_csd()失败条件
通过特定的硬件配置、资源竞争或异常状态使create_csd()函数返回错误。
STEP 4
步骤4:触发资源泄漏
由于漏洞代码直接return而未跳转到error标签,导致irq中断资源和内存资源未被释放。
STEP 5
步骤5:影响系统可用性
重复触发该问题可导致系统资源逐渐耗尽,最终影响系统稳定性和可用性,可能需要重启系统恢复。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* CVE-2022-50525 PoC - Triggering fsl_pamu_probe() resource leak */ /* This PoC demonstrates the resource leak by forcing create_csd() to fail */ #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/platform_device.h> /* Simulate conditions that cause create_csd() to fail during probe */ static int __init trigger_pamu_probe_failure(void) { struct platform_device *pdev; int ret; /* Allocate a platform device to trigger fsl_pamu_probe */ pdev = platform_device_alloc("fsl-pamu", -1); if (!pdev) return -ENOMEM; /* Add the platform device - this will call fsl_pamu_probe() */ ret = platform_device_add(pdev); if (ret) { platform_device_put(pdev); return ret; } /* If create_csd() fails internally, irq and memory resources */ /* will not be released due to the missing goto error fix */ pr_info("fsl_pamu_probe triggered - check /proc/interrupts for leaked IRQ\n"); return 0; } static void __exit cleanup_trigger(void) { pr_info("Module unloaded\n"); } module_init(trigger_pamu_probe_failure); module_exit(cleanup_trigger); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("PoC for CVE-2022-50525 fsl_pamu resource leak");

影响范围

Linux Kernel < 5.15.71 (受fsl_pamu_probe资源泄漏影响的版本)
Linux Kernel < 5.10.150
Linux Kernel < 5.4.210
Linux Kernel < 4.19.254
Linux Kernel < 4.14.290

防御指南

临时缓解措施
在无法立即升级内核的情况下,建议采取以下临时缓解措施:1)限制本地用户对fsl-pamu相关模块的加载权限;2)监控系统资源使用情况,特别是中断和内存资源;3)定期重启系统以释放累积泄漏的资源;4)使用Linux内核的kASLR等安全特性增加利用难度;5)通过SELinux或AppArmor限制非特权用户对硬件相关操作的访问。

参考链接

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