CVE-2026-23339Linux内核NFC子系统中存在内存泄漏漏洞。nci_transceive()函数在处理-EPROTO、-EINVAL和-EBUSY等错误路径时,未释放已获取的skb(socket buffer)所有权,导致内存资源无法回收。该漏洞通常在NFC自检或特定数据交互中触发,可能导致本地系统内存耗尽,从而影响系统可用性。
该漏洞位于Linux内核的net/nfc/nci/core.c文件中。nci_transceive()函数预期会完全接管调用者传入的skb缓冲区。然而,当函数在执行过程中遇到协议错误(-EPROTO)、无效参数(-EINVAL)或设备忙碌(-EBUSY)时,代码直接返回了错误码,却跳过了释放skb的步骤。在NFC设备进行自检(nci_dev selftest)或处理NIPA数据交换时,如果频繁触发这些错误路径,kmemleak会检测到大量未引用的内存对象。由于这些对象无法被回收,持续的攻击或操作可能导致系统内存耗尽,引发拒绝服务(DoS)。