CVE-2022-50501CVE-2022-50501是Linux内核中media/coda驱动的一个空指针解引用漏洞。该漏洞位于Coda视频编解码器驱动中,具体在dcoda_iram_alloc函数调用处。由于coda_iram_alloc函数可能返回NULL指针,而代码中缺少对返回值的检查,可能导致空指针解引用,从而使内核崩溃或触发拒绝服务攻击。
Coda是Linux内核中用于支持CODA系列视频处理器的驱动模块,广泛应用于嵌入式系统和多媒体设备中。该驱动负责管理视频编解码硬件资源,包括内部RAM(IRAM)的分配和使用。当驱动尝试使用未检查的IRAM分配返回值时,如果分配失败,系统将尝试访问空指针所在的内存区域。
该漏洞的CVSS评分为5.5,属于中等严重级别。虽然需要本地访问权限和低权限才能利用,但不需要用户交互,且对系统可用性影响较高。攻击者可利用此漏洞导致系统内核崩溃(kernel panic),从而实现拒绝服务攻击。该漏洞已在Linux内核主线中得到修复,多个稳定版本分支也已包含修复补丁。
该漏洞的根本原因在于Linux内核coda驱动中缺少对dcoda_iram_alloc函数返回值的检查。coda_iram_alloc函数用于分配CODA硬件的内部RAM(IRAM)资源,在内存不足或硬件异常情况下可能返回NULL指针。
在原始代码中,dcoda_iram_alloc的返回值直接被使用而未进行NULL检查,这与代码中其他类似的资源分配调用(如dma_alloc_coherent等)的处理方式不一致。当分配失败返回NULL时,后续代码尝试访问该指针指向的内存区域,将触发内核空指针解引用异常(NULL pointer dereference),导致内核oops或panic。
从技术角度看,攻击者需要具备本地系统访问权限(AV:L)和低权限(PR:L),这意味着普通用户即可触发该漏洞。攻击者可以通过编写恶意程序或利用特定的多媒体操作场景,触发CODA驱动的IRAM分配路径,在分配失败的条件下导致内核崩溃。
该漏洞的修复方案是在dcoda_iram_alloc调用后添加返回值检查,如果返回NULL则进行适当的错误处理,避免后续对空指针的访问。修复涉及多个内核稳定版本,包括v5.10、v5.15、v5.19等主流长期支持分支。