CVE-2026-22983CVE-2026-22983是Linux内核中的一个中等严重性安全漏洞,CVSS评分为5.5。该漏洞存在于Linux内核的网络子系统,具体位于AF_UNIX流套接字的unix_stream_read_generic函数中。漏洞的根本原因是在splice操作期间,当state->msg为NULL时,代码仍尝试写入msg->msg_get_inq字段,导致NULL指针解引用。msg_get_inq应该是从调用者传递给被调用者的输入字段,但被调用者不应修改它,因为调用者可能在结构重用时未清除该字段。此漏洞可能影响系统的可用性,导致本地拒绝服务。攻击者需要低权限即可触发此漏洞,无需用户交互。
该漏洞的技术根源在于unix_stream_read_generic函数中对msg_get_inq字段的不当处理。在splice操作期间,state->msg可能为NULL(自commit 2b514574f7e8引入的AF_UNIX流套接字splice支持以来),但代码仍尝试写入msg->msg_get_inq,导致NULL指针解引用。问题出在两个地方:首先,msg_get_inq作为输入字段被调用者设置以请求返回输入队列长度,但被调用者不应修改它;其次,为了减少热路径中的分支,SO_INQ请求也会设置msg_inq,但这与msg_get_inq的处理逻辑产生了冲突。该漏洞是commit 4d1442979e4a(修复了SO_INQ的逆问题)的后续修复,通过避免在callee中写入msg_get_inq来解决问题,同时使用按位或运算合并了两个分支以简化代码。