CVE-2026-31638Linux内核中的rxrpc协议处理模块存在一个严重的拒绝服务漏洞。该漏洞发生在`rxrpc_input_packet_on_conn`函数处理客户端数据包的过程中。当通道上的当前客户端调用已被拆除,导致`chan->call`为空指针时,`rxrpc_try_get_call`函数会返回获取失败。然而,随后的错误处理路径未对该返回值进行有效性检查,仍然无条件地调用了`rxrpc_put_call`函数。这一逻辑错误触发了空指针解引用,将原本的协议错误处理转变为内核崩溃。远程攻击者无需用户交互或身份认证,即可通过发送特制网络数据包利用此漏洞,导致目标系统内核崩溃,从而造成服务中断。
该漏洞的根源在于Linux内核`net/rxrpc`子系统中的引用计数管理逻辑错误。具体场景是,当`rxrpc_input_packet_on_conn()`函数正在处理发往客户端的数据包时,若该通道对应的调用对象已经被销毁,则`chan->call`指针为NULL。此时调用`rxrpc_try_get_call()`试图增加引用计数会返回NULL。根据正常的内核编程规范,调用者应当检查返回值,只有在成功获取引用时才进行后续操作。然而,存在缺陷的代码路径(客户端隐式结束错误路径)忽略了这一检查,直接执行了`rxrpc_put_call()`。由于传入的指针为NULL,该操作触发内核的空指针异常处理机制,进而导致系统崩溃(Kernel Panic)。攻击者可以通过网络向目标主机发送精心构造的恶意数据包,诱导系统进入该错误代码路径。由于CVSS评分为7.5,且无需认证(PR:N)和用户交互(UI:N),该漏洞易于利用且对系统可用性影响巨大(A:H)。