CVE-2022-50509CVE-2022-50509是Linux内核中media/coda驱动存在的一个NULL指针解引用漏洞。该漏洞源于coda驱动在调用kmalloc进行内存分配时,未对返回的指针进行有效性检查。由于kmalloc在内存不足时可能返回NULL指针,如果直接使用该指针而未做检查,将导致内核发生NULL指针解引用错误,可能引发内核崩溃(Kernel Panic)或拒绝服务(DoS)攻击。
该漏洞的CVSS评分为5.5,属于中危级别。攻击者需要具备本地低权限访问能力即可触发该漏洞,无需用户交互。漏洞的影响范围主要集中在系统可用性方面,成功利用该漏洞可能导致系统不稳定或完全不可用,但不会直接造成数据泄露或数据篡改。
该漏洞已在Linux内核的多个稳定版本中得到修复,包括5.10.162、5.15.85、5.19.6等多个版本。修复方案是在kmalloc调用之后添加对返回值的检查,确保指针有效后再进行后续操作,从而避免NULL指针解引用的发生。
Linux内核的coda(一种视频编解码硬件加速器)驱动在初始化或运行过程中会调用kmalloc函数动态分配内存。kmalloc是Linux内核中用于分配小块内存的函数,当系统内存不足或分配请求无法满足时,kmalloc会返回NULL指针。
在存在漏洞的代码路径中,coda驱动直接使用kmalloc返回的指针进行后续操作(如内存初始化、数据拷贝等),而未检查该指针是否为NULL。当kmalloc返回NULL时,后续的内存访问操作将触发NULL指针解引用异常。
在Linux内核中,访问地址0附近的内存(NULL指针解引用)通常会导致内核oops(类似panic的错误),在某些配置下甚至可能导致整个系统挂起。由于该漏洞需要本地权限触发,攻击者可以通过编写特定的程序或利用脚本来触发该漏洞,实现本地拒绝服务攻击。
利用方式:攻击者需要在目标系统上拥有本地用户权限(即使是低权限用户),然后通过某种方式使系统内存分配失败(例如消耗大量内存),随后触发coda驱动的相关代码路径(如打开视频设备、进行视频编解码操作等),从而触发NULL指针解引用漏洞。