CVE-2026-43098Linux内核的NFC子系统s3fwrn5驱动存在安全漏洞。s3fwrn82_uart_read()函数在处理UART接收数据时,若分配新的接收缓冲区失败,会错误地返回0但已消费数据,导致recv_skb指针为NULL。这会在后续数据接收时触发空指针解引用,进而引发内核崩溃或拒绝服务。
该漏洞位于Linux内核的drivers/nfc/s3fwrn5/uart.c驱动文件中。问题出在s3fwrn82_uart_read()函数对内存分配失败的处理逻辑上。该函数首先将接收到的数据写入当前的recv_skb,当一帧数据处理完毕并交付后,代码尝试调用alloc_skb()为下一帧分配新的缓冲区。如果分配失败(例如内存不足),当前代码返回0(未处理字节数),但实际上数据已从串口读取并消费。这导致recv_skb指针保持为NULL。当下一次接收中断到来并调用skb_put_u8()尝试写入数据时,由于recv_skb为NULL,将触发内核空指针解引用(Kernel Panic)。攻击者需要本地低权限即可利用此漏洞造成系统拒绝服务。