CVE-2023-53607CVE-2023-53607是Linux内核中ALSA(Advanced Linux Sound Architecture)ymfpci声卡驱动的一个漏洞。该漏洞位于sound/pci/ymfpci/ymfpci_main.c文件的snd_ymfpci_create函数中,具体在探测(probe)阶段触发。漏洞的根本原因是snd_dma_buffer.bytes字段现在包含对齐后的内存大小,而原有的snd_BUG_ON()断言没有考虑到这一变化,导致在特定条件下触发内核警告和BUG_ON,从而引发系统不稳定或拒绝服务。
该漏洞在Linux内核6.1.21-lts版本中被发现并报告,从堆栈跟踪可以看出,当snd_ymfpci模块加载时,snd_ymfpci_create函数中的snd_BUG_ON()宏被触发,产生了内核警告信息。漏洞的CVSS评分为5.5,属于中等严重等级,其攻击向量为本地攻击(AV:L),需要低权限(PR:L),无需用户交互(UI:N),对机密性无影响(C:N),对完整性无影响(I:N),但对可用性影响较高(A:H)。
此漏洞影响使用AMD/ATI YMF724/YMF740/YMF744/YMF754等Yamaha PCI音频芯片的系统。当系统启动或加载snd_ymfpci模块时,存在缺陷的代码路径会被触发,可能导致内核警告、系统不稳定或拒绝服务状态。
从技术层面分析,该漏洞的核心问题在于snd_dma_buffer结构体的bytes字段语义发生了变化。在Linux内核的DMA缓冲区管理中,bytes字段现在表示对齐后的实际分配大小,而非原始请求的大小。然而,snd_ymfpci驱动中的snd_ymfpci_create函数(位于sound/pci/ymfpci/ymfpci_main.c第2168行附近)中的snd_BUG_ON()断言仍然使用旧的大小检查逻辑,没有考虑对齐带来的差异。
当snd_ymfpci模块被加载时(通过pci_probe回调snd_card_ymfpci_probe),驱动会调用snd_ymfpci_create来初始化硬件。在该函数中,会分配DMA缓冲区用于音频数据传输。分配完成后,snd_dma_buffer.bytes字段会被设置为对齐后的大小(例如向上对齐到页面边界或特定的DMA对齐要求)。但原有的检查逻辑可能假设bytes字段等于原始请求大小,从而导致断言失败。
漏洞触发后的调用链为:work_for_cpu_fn -> process_one_work -> worker_thread -> snd_card_ymfpci_probe -> snd_ymfpci_create,在snd_ymfpci_create函数内部触发snd_BUG_ON()。
该漏洞的利用条件较为简单:攻击者只需要具有本地低权限访问权限,能够加载snd_ymfpci内核模块(通常通过modprobe或udev自动加载),即可触发此漏洞。虽然该漏洞不会直接导致权限提升或代码执行,但会引发内核警告并可能导致系统不稳定,在某些场景下可能造成拒绝服务。