CVE-2026-31629Linux内核NFC子系统的llcp模块存在高危漏洞。在处理socket状态为LLCP_CLOSED的逻辑时,代码在调用release_sock和nfc_llcp_sock_put后缺失return语句,导致执行流继续并重复释放资源。这引发了引用计数下溢及释放后重用,攻击者利用此漏洞可导致系统崩溃或权限提升。
该漏洞源于Linux内核net/nfc/llcp/commands.c文件中的逻辑缺陷。具体在nfc_llcp_recv_hdlc()和nfc_llcp_recv_disc()函数中,当检测到socket状态为LLCP_CLOSED时,代码虽然正确调用了release_sock()释放锁和nfc_llcp_sock_put()减少引用计数,但遗忘了关键的return语句。这导致程序并未退出,而是继续执行后续代码,再次调用相同的清理函数。这种重复释放导致引用计数下溢,进而引发严重的Use-After-Free(释放后重用)漏洞。攻击者可通过邻接网络发送特制NFC数据包触发该逻辑,导致内核崩溃或潜在的权限提升。