CVE-2023-53541CVE-2023-53541是Linux内核中mtd(Memory Technology Devices)子系统下rawnand brcmnand驱动程序的一个高危安全漏洞。该漏洞存在于Broadcom NAND控制器驱动的OOB(Out-Of-Band)写入功能中。当OOB缓冲区长度不是字(word)对齐时,OOB写入函数在最后一次迭代中会对OOB源缓冲区执行越界读取操作。攻击者可以利用此漏洞读取超出分配缓冲区范围的数据,可能导致内核内存信息泄露、缓冲区溢出或系统崩溃。该漏洞的CVSS 3.1评分为7.8分,属于高危级别,需要低权限本地访问即可利用,无需用户交互,且对机密性、完整性和可用性均产生高影响。受影响的Linux内核版本涉及多个稳定分支,漏洞已在多个内核补丁中得到修复,包括14b1d00520b4、2353b7bb61e4、2bc3d6ac704e、45fe4ad7f439和5d53244186c9等提交。由于该漏洞位于内核态驱动程序中,利用成功可能导致权限提升、内核数据泄露或拒绝服务攻击,对系统安全构成严重威胁。
该漏洞的技术根源在于brcmnand驱动中OOB写入函数的边界检查缺失。具体而言,在brcmnand_write_oob()函数中,代码以字(word,4字节)为单位循环读取OOB源缓冲区数据并写入NAND控制器的OOB寄存器。当OOB缓冲区长度不是4的整数倍时,循环的最后一次迭代会尝试读取超过实际分配缓冲区末尾的数据,从而触发越界读取(Out-of-Bounds Read)。这种越界读取可能导致以下安全问题:1)内核堆栈或堆内存中的敏感数据被泄露,攻击者可以通过控制后续操作读取这些泄露的数据;2)越界读取的数据被写入NAND硬件寄存器,可能导致硬件异常或不可预期的行为;3)在特定条件下,可能被利用实现权限提升或代码执行。修复方案是在每次循环迭代中都检查OOB缓冲区的长度限制,当到达缓冲区末尾时,用0xff填充剩余的OOB寄存器,确保不会发生越界读取。CVSS向量表明该漏洞需要本地访问(AV:L)、低权限(PR:L)、无需用户交互(UI:N),攻击复杂度低(AC:L),且对机密性、完整性、可用性均有高影响(C:H/I:H/A:H),表明这是一个可被本地低权限用户利用的高危漏洞。