CVE-2023-53535CVE-2023-53535是Linux内核中bcmgenet网络驱动程序存在的一个拒绝服务漏洞。该漏洞源于驱动程序在处理网络数据包时未对超大数据包进行适当的检查。bcmgenet是博通(Broadcom)提供的以太网控制器驱动,广泛应用于多种嵌入式设备和SoC平台中。
在正常情况下,bcmgenet驱动会分配2KiB的SKB(Socket Buffer)来接收网络数据包。然而,在某些情况下,硬件可能会接收到超过2KiB标称缓冲区大小的超大数据包。当驱动程序处理这些超大数据包时,会触发skb_over_panic()函数,导致内核崩溃,从而引发系统拒绝服务。
该漏洞的CVSS评分为5.5,属于中危级别。虽然攻击需要本地权限和低权限要求,但由于其对系统可用性的高影响(可用性影响为高),仍然构成严重的安全威胁。该漏洞于2025年10月4日披露,影响多个Linux内核稳定版本。
此漏洞的修复通过在数据包处理早期添加大小检查来实现,当检测到超大数据包时直接丢弃,避免触发内核panic,从而保证系统的稳定运行。
bcmgenet是Broadcom基因集(Genet)以太网MAC控制器的Linux内核驱动程序,支持多种博通SoC平台。该驱动在接收数据包时,会预先分配固定大小(通常为2KiB)的SKB缓冲区用于存储从硬件DMA传输过来的数据包内容。
漏洞的根本原因在于驱动缺少对接收数据包长度的边界检查。在特定条件下,硬件可能接收到长度超过分配缓冲区容量的数据包(例如由于网络异常、恶意构造的流量或硬件故障)。当驱动程序尝试将超过SKB分配大小的数据写入缓冲区时,会触发skb_over_panic()函数,该函数用于检测SKB缓冲区溢出并触发内核oops或panic。
skb_over_panic()是Linux内核中SKB(Socket Buffer)子系统的调试保护机制,当检测到SKB数据写入超出其分配的尾部空间时会触发。一旦被调用,会导致内核堆栈跟踪输出和系统崩溃,使整个系统不可用。
修复方案是在数据包接收处理的早期阶段(即数据从硬件DMA传输到SKB后、进一步处理之前)添加数据包大小检查。如果检测到数据包长度超过预期的最大缓冲区大小(例如超过2KiB),则直接丢弃该数据包并继续处理下一个数据包,从而避免触发skb_over_panic()。
该漏洞的利用条件较为严格:攻击者需要本地系统访问权限(PR:L),且无需用户交互(UI:N)。虽然机密性和完整性不受影响,但由于可用性影响为高(A:H),本地低权限用户可通过触发此漏洞导致系统拒绝服务。